我想在ebpf内核程序中获取被删除文件的绝对路径,有什么好的方法?
我现在使用fexit监控do_ublinkat(删除文件)和vfs_rmdir(删除目录)两个函数,函数的参数中只包含struct dentry,所以bpf_d_path等函数无法使用。我只能尝试从dentry反向遍历parent去获取路径,根据内核资料,创建文件的最大路径长度是4096,但是根据测试这个是从当前路径计算的,不包含根目录到当前目录的长度,当我用mkdir -p $(printf "test%s/" $(seq -s ' ' 1 10000))
命令时,可以在当前目录下创建1W个目录 test10000的绝对路径长度远大于4096,大概60000多字符。我现在如果需要一个缓冲区存储遍历结果的话 这个缓冲区的值并不固定,太大的值ebpf中也无法使用,现在还有什么其他的方案吗