Linux/shareflags: различия между версиями
(Новая страница: «== Этапы продвижения флагов совместного доступа к файлу в ядро Linux == [http://bugs.etersoft.ru/show_bug.cgi?…») |
|||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 15: | Строка 15: | ||
В файловой системе SMB/CIFS присутствуют все три вышеописанных флага, в то время как NFSv4 оперирует лишь первыми двумя. | В файловой системе SMB/CIFS присутствуют все три вышеописанных флага, в то время как NFSv4 оперирует лишь первыми двумя. | ||
== Состояние дел: == | |||
1) Актуальная версия патчей для ядра v3.13-rc4 лежит [http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/share-flags здесь] (начиная с патчей "VFS: *"). | 1) Актуальная версия патчей для ядра v3.13-rc4 лежит [http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/share-flags здесь] (начиная с патчей "VFS: *"). | ||
Строка 21: | Строка 21: | ||
2) [https://lkml.org/lkml/2014/1/17/427 Обсуждение патчей]. | 2) [https://lkml.org/lkml/2014/1/17/427 Обсуждение патчей]. | ||
== Последние замечание/предложения: == | |||
1) Предложено добавить новый вызов openat2(), который будет проверять наличие поддержки в ядре для указанного флага и генерировать ошибку, если флаг не известен. В данном вызове можно увеличить поле флагов или сделать расширяемый список параметров, а также добавить новые флаги. | |||
2) Предложено разбить патч #1 на два: а) исправление работы flock+LOCK_MAND для разделов, смонтированных с 'sharelock'; б) добавление флагов O_DENYREAD и O_DENYWRITE и их обработки в open. | |||
3) Предложено перенести весь код O_DENYDELETE в отдельный файл. | |||
== Статус == | |||
Патчи не приняты, поэтому эта функциональность имеется только в модуле [[Etercifs|etercifs]]. | |||
[[Категория:etercifs]] | |||
[[Категория:Linux]] |
Текущая версия на 00:57, 4 октября 2020
Этапы продвижения флагов совместного доступа к файлу в ядро Linux
Флаги совместного доступа используются протоколами SMB/CIFS и NFSv4 для организации совместного доступа к файлу и возможности запрещения открытия такого файла другими процессами в определенных режимах. Поскольку данный флаги активно используются Wine приложениями для работы с файлами на сетевых ресурсах, необходима поддержка такого функционала в ядре Linux (в частности в модулях CIFS и NFS).
Оригинально в WinAPI используются три флага (CreateFile Function):
1) FILE_SHARE_READ - разрешает открытие файла на чтение.
2) FILE_SHARE_WRITE - разрешает открытие файла на запись.
3) FILE_SHARE_DELETE - разрешает удаление файла.
В файловой системе SMB/CIFS присутствуют все три вышеописанных флага, в то время как NFSv4 оперирует лишь первыми двумя.
Состояние дел:
1) Актуальная версия патчей для ядра v3.13-rc4 лежит здесь (начиная с патчей "VFS: *").
Последние замечание/предложения:
1) Предложено добавить новый вызов openat2(), который будет проверять наличие поддержки в ядре для указанного флага и генерировать ошибку, если флаг не известен. В данном вызове можно увеличить поле флагов или сделать расширяемый список параметров, а также добавить новые флаги.
2) Предложено разбить патч #1 на два: а) исправление работы flock+LOCK_MAND для разделов, смонтированных с 'sharelock'; б) добавление флагов O_DENYREAD и O_DENYWRITE и их обработки в open.
3) Предложено перенести весь код O_DENYDELETE в отдельный файл.
Статус
Патчи не приняты, поэтому эта функциональность имеется только в модуле etercifs.