LINUX.ORG.RU

драйвер файловой системы по сути пересчитывает геометрию и всё, насрать ему на какие-то там процессы.

deadman ★★
()

Еще вопросик. А драйвер может сам по себе изменить содержимое каталога, т.е. со своей стороны, чтобы при этом процессы могли узнать об изменении скажем через inotify?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

>драйвер может сам по себе изменить содержимое каталога

а кто же это делает?

чтобы при этом процессы могли узнать об изменении скажем через inotify


а как же это происходит тогда?

jcd ★★★★★
()
Ответ на: комментарий от jcd

Я думал, что происходит так:
Один процесс удаляет файл (например), ядро об этом сообщает другим процессам через inotify и вызывает соответствующую процедуру в драйвере, т.е. непосредственное удаление файла.
Драйвер то конечно может сам по себе изменить все что угодно, хоть мусор на раздел записать, но как при этом сработает inotify?

«Общение» ядра с драйвером происходит в одностороннем порядке, ведь так?
Обращения к драйверу типа: «дай мне листинг каталога по пути /xxx/yyy», «дай мне содержимое файлы /xxx/yyy/aaa со смещения такого то», «создай каталог /xxx/zzz».
Я правильно понимаю?
Как драйвер со своей стороны «торкнет» inotify при изменениях?
Т.е. драйвер взял и удалил файл, как об этом узнает ядро?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

драйвер предоставляет интерфейс

ядро предоставляет интерфейс

когда ядру надо что-то сделать с ФС - он дергает драйвер

когда драйверу нужно что-то сделать с ядром - он дергает ядро

что тут не так?

namezys ★★★★
()
Ответ на: комментарий от namezys

у него другая проблема, предположим его драйверу захотелось снести все файлы в каталоге в какой то определенный момент, как уведомить ядро, что мы это сделали?

antony986
()
Ответ на: комментарий от antony986

> у него другая проблема, предположим его драйверу захотелось снести все файлы в каталоге в какой то определенный момент, как уведомить ядро, что мы это сделали?

по моему он не обязан об этом ядро уведомлять

или воспольнозовть интерфейсом нотификации, типа iNotify или как его там

namezys ★★★★
()
Ответ на: комментарий от vga

и что. это вызов летит ядро, потом обратной в userspcae в fuse, далее происходит вызов в драйвере «метода» unlink

namezys ★★★★
()
Ответ на: комментарий от antony986

Первое, что в голову пришло. А почему нет, вроде все корректно отработает. Ну разве что вызывать лучше в отдельном потоке, а то и зависнуть можно.

vga ★★
()
Ответ на: комментарий от namezys

>или воспольнозовть интерфейсом нотификации, типа iNotify или как его там

я вот в интерфейсе inotify этого не нашел, я так понимаю ядро дергает inotify при каждом системном вызове связанном с фс

antony986
()
Ответ на: комментарий от vga

тут есть одна проблема, fuse работает у нас как раз в userspace, с правами юзера который ее запустил. а это значит снести чужие файлы из нашей собственной фс при такой схеме не получится.

antony986
()
Ответ на: комментарий от antony986

Хм. Не может быть, что источником уведомления служил системный вызов. источником уведомления может быть только операция, а операцию выполняет ФС, а не ядро

namezys ★★★★
()
Ответ на: комментарий от vga

>Наша ж фс, разрешить нам удалять. Права поменять, в конце концов.

в принципе да, но это уже похоже на костыль, хотя он конечно будет внутри..

antony986
()
Ответ на: комментарий от antony986

http://sourceforge.net/apps/mediawiki/fuse/index.php?title=Inotify_change_notification

Написано, что «как-то» и без помощи фусе все работает.

На примере ссш : если удаляют через фусе, то все видно через инотифай. Если напрямую удалят на удаленном хосте, то понятно, что никто этого не увидит. Есть мысли придумать какое-то апи, но пока никакого апи нет.

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

vga ★★
()
Ответ на: комментарий от vga

И кстати, это первая ссылка в гугле по запросу «fuse inotify».

А первый вопрос был найден в fuse faq.

Так что рекомендую сначала пользоваться гуглом, а уже потом спрашивать на лоре.

Davidov ★★★★
()
Ответ на: комментарий от antony986

нашел блин, погрепал драйвера nfs на notify

 #include <linux/fsnotify.h> 

там и лежит api для уведомлений (fsnotifu_access, fsnotify_move...), а за fsnotify уже может быть dnotify, inotify и fanotify. а вот как уже выше сказали для fuse этого еще нет, такие дела ))

antony986
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.