[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