[Devel] Тесты по CIFS

Pavel Shilovsky =?iso-8859-1?q?piastry_=CE=C1_etersoft=2Eru?=
Пн Янв 5 13:58:56 MSK 2009


On Tuesday 30 December 2008 18:13:19 Evgeny Sinelnikov wrote:
> 30 декабря 2008 г. 16:27 пользователь Dmitriy M. Maslennikov
>
> <maslennikovdm на gmail.com> написал:
> > Результаты:
> > Как и должно быть, это работает в случаях L_LL, L_LW, и не работает в
> > случаях *_WW, *_WL. Но это не работает в случаях W_LL и W_LW, что, на
> > мой взглад является ошибкой.
>
> Не уверен, что снятие POSIX-блокировок на клиенте должно зависеть от
> типа сервера.... Но, судя по тесту, cifs-клиент либо полагается на
> логику сервера, либо отключает POSIX-совместимость в случае, когда
> сервер не присылает в своих "особенностях" "POSIX-возможности"... Этот
> момент нужно проверить...

Блокировки с cifs клиенте реализованы следующем образом:
1. posix locking - случай, когда сервер и клиент поддерживают unix extension и 
не включена опция монтирования forcemandatory.

В этом случае происходит следующее:
Снятие и установка блокировок происходит без каких-либо дополнительный 
действий. Запрос-снятие, запрос-установка - и всё.

2. windows locking - все остальные случаи.

В этом случае происходит следующее:

При установки блокировок происходит их сохранение в список, согласно фиду - 
file information data - стуртуры, содержащей информацию о файле, в том числе и 
pid процесса, удерживающего дескриптор.

При снятии блокировки драйвер просматривает список на наличие вложенных в 
снимаемую блокировку блокировок и снимает их.

При закрытии файла сначала отправляется запрос на закрытие файла, потом 
очищается этот список, при этом никаких запросов о снятии этих блокировок не 
посылается.

--Best regards,
Pavel Shilovsky.





Подробная информация о списке рассылки devel