Как открыть и прочитать файл из `struct inode *` в ядре Linux - PullRequest
0 голосов
/ 14 января 2019

Я хочу проверить содержимое файла из Linux Kernel v3.0.8, зная только struct inode *. Мне нужно только прочитать начало файла, указанного этим индексом, затем закрыть и вернуться. Меня не волнует дополнительная информация, такая как имя файла / точка монтирования и т. Д. На самом деле файл может не иметь имени (например, удален, но все еще открыт). Возможно ли это?

1 Ответ

0 голосов
/ 14 января 2019

Я наконец сделал это так:

  1. Это необходимо.
struct path root;
struct file *filerd;
  1. Получить задачу инициализации fs root.
task_lock(&init_task);
get_fs_root(init_task.fs, &root);
task_unlock(&init_task);
  1. Изменить dentry на этот файл:
root.dentry = d_find_alias(inode);
  1. Открыть файл:
filerd = file_open_root(root.dentry->d_parent, root.mnt,
                        root.dentry->d_name.name, O_RDONLY);

Это работало для каждого процесса, который я тестировал, и для разных точек монтирования, что меня удивило.

...