Slide 22
Slide 22 text
Hook for generic_file_aio_read()
BPF_HASH(inotbl, u64, unsigned long, INO_TABLE_SIZE);
int kprobe__generic_file_aio_read(struct pt_regs *ctx,
struct kiocb *iocb,
const struct iovec *iov,
unsigned long nr_segs,
loff_t pos) {
u64 pid_tgid = bpf_get_current_pid_tgid();
unsigned long ino;
if (iocb->ki_filp->f_path.dentry->d_inode) {
ino = iocb->ki_filp->f_path.dentry->d_inode->i_ino;
} else {
// Set 0 if it's negative cache
ino = 0;
}
inotbl.insert(&pid_tgid, &ino);
return 0;
}