Linux/shareflags: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
(Новая страница: «== Этапы продвижения флагов совместного доступа к файлу в ядро Linux == [http://bugs.etersoft.ru/show_bug.cgi?…»)
 
Строка 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 Обсуждение патчей].


3) Последние замечание/предложения:
== Последние замечание/предложения: ==


3.1) Предложено добавить новый вызов openat2(), который будет проверять наличие поддержки в ядре для указанного флага и генерировать ошибку, если флаг не известен. В данном вызове можно увеличить поле флагов или сделать расширяемый список параметров, а также добавить новые флаги.
1) Предложено добавить новый вызов openat2(), который будет проверять наличие поддержки в ядре для указанного флага и генерировать ошибку, если флаг не известен. В данном вызове можно увеличить поле флагов или сделать расширяемый список параметров, а также добавить новые флаги.


3.2) Предложено разбить патч #1 на два: а) исправление работы flock+LOCK_MAND для разделов, смонтированных с 'sharelock'; б) добавление флагов O_DENYREAD и O_DENYWRITE и их обработки в open.
2) Предложено разбить патч #1 на два: а) исправление работы flock+LOCK_MAND для разделов, смонтированных с 'sharelock'; б) добавление флагов O_DENYREAD и O_DENYWRITE и их обработки в open.


3.3) Предложено перенести весь код O_DENYDELETE в отдельный файл.
3) Предложено перенести весь код O_DENYDELETE в отдельный файл.
 
== Статус ==
 
Патчи не приняты, поэтому эта функциональность имеется только в модуле [[Etercifs|etercifs]].
 
 
[[Категория:etercifs]]

Версия 21:31, 5 июля 2018

Этапы продвижения флагов совместного доступа к файлу в ядро 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: *").

2) Обсуждение патчей.

Последние замечание/предложения:

1) Предложено добавить новый вызов openat2(), который будет проверять наличие поддержки в ядре для указанного флага и генерировать ошибку, если флаг не известен. В данном вызове можно увеличить поле флагов или сделать расширяемый список параметров, а также добавить новые флаги.

2) Предложено разбить патч #1 на два: а) исправление работы flock+LOCK_MAND для разделов, смонтированных с 'sharelock'; б) добавление флагов O_DENYREAD и O_DENYWRITE и их обработки в open.

3) Предложено перенести весь код O_DENYDELETE в отдельный файл.

Статус

Патчи не приняты, поэтому эта функциональность имеется только в модуле etercifs.