Как ядро Linux узнает, какой inotify_handle имеет определенный контроль

#linux #filesystems #kernel #inotify

#linux #файловые системы #ядро #inotify

Вопрос:

Я понял, что ядро Linux предоставляет «механизм inotify» для мониторинга файловой системы.

Согласно inotify, inotify_init() возвращает fd для получения inotify_event от ядра. (Я понял, что ядро будет писать inotify_event на нем.)

1) И если я добавлю новое наблюдение с inotify fd помощью using inotify_add_watch() , кто будет писать inotify_event в inotify fd, когда просматриваемый файл получит событие.

2) (если ядро делает,) когда ядро обнаруживает событие для просматриваемого файла, как ядро решает, какой inotify fd(inotify_instance) должен обновляться с этим inotify_event ?

Ответ №1:

Мое собственное исследование, это ответ:

  1. Это ядро Linux; в частности, файловая система.
  2. Когда вы вызываете inotify_add_watch() определенный файл, inotify сохраняет некоторую информацию о inotify наблюдении в inode структуре этого файла.

Затем, всякий раз, когда файловая система имеет дело с этим файлом, она проверяет структуру файла inode — существует ли inotify watches он или нет. Если inotify часы найдены из inode структуры, inotify отчеты inotify_event .