Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 4132 - Невозможно корректно реализовать работу с блокировками в WINE   Make a simular bug
Summary: Невозможно корректно реализовать работу с блокировками в WINE
Status: CLOSED FIXED
Alias: None
Product: CIFS@Etersoft
Classification: Продукты (Products)
Component: блокировки файлов и доступ (show other bugs)
Version: не указана
Hardware: PC All
: P1 critical
Target Milestone: ---
Assignee: Евгений Синельников
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 3589 4118
  Show dependency treegraph
 
In work:
Reported: 2009-07-23 20:03 MSD by Александр Морозов
Modified: 2009-11-21 17:45 MSK (History)
1 user (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Морозов 2009-07-23 20:03:33 MSD
Текущий CIFS не позволяет корректно реализовать работу с блокировками в WINE. Сейчас при закрытии файлового дескриптора происходит сброс блокировок (как по POSIX). В Windows это не происходит, пока не будет закрыт последний соответствующий файлу дескриптор.

WINE может действовать двумя способами:
1. Оставлять Linux-дескриптор открытым, пока Windows-программа не закроет последний дескриптор. При этом возникают проблемы с повторным открытием файлов. Допустим, мы открываем файл с GENERIC_WRITE и FILE_SHARE_READ|FILE_SHARE_WRITE, получаем дескриптор 1. Затем открываем его с GENERIC_READ и FILE_SHARE_WRITE, получаем дескриптро 2, закрываем дескриптор 2. Теперь мы не сможем открыть его с GENERIC_READ ещё раз.
2. Закрывать Linux-дескриптор сразу при закрытии файла Windows-программой. Тогда не будет проблем с повторным открытием файлов, но будут сбрасываться блокировки.

Как видно, корректно реализовать работу с блокировками в WINE не получается. Предлагаю изменить поведение CIFS так, чтобы при открытии файла так, как это делает WINE (с дополнительными флагами, сообщающими о режимах FILE_SHARE*), закрытие дескриптора не приводило к сбросу блокировок. Для файлов, открытых без дополнительных флагов, можно оставить сброс блокировок, как это предполагает POSIX.
Comment 1 Vitaly Lipatov 2009-07-23 20:43:52 MSD
Возможно будет проще привязать нужное нам поведение к какому-то параметру монтирования (возможно, новому). В любом случае поведением POSIX/не POSIX по поводу закрытия дескрипторов стоит иметь возможность управлять.
Ожидается, что исправление будет в версии etercifs 4.3.8, сборка WINE@Etersoft будет требовать версию не ниже.
Сделать нужно как можно скорее, это задерживает релиз.
Comment 2 Евгений Синельников 2009-07-28 16:20:00 MSD
Собрал etercifs-4.3.8.

В сборке etercifs-4.3.8-alt3 исправил выявленные после пересборки ошибки на legacy и 2.6.29 ядрах.

Перезалил умерщвлённый недавно репозиторий:
http://git.etersoft.ru/people/sin/packages/cifs-2.6.git

Актуальные ветки наших ядер:
legacy-etercifs
legacy-centos52-etercifs (сейчас идентичен legacy-etercifs)
legacy-centos53-etercifs
v2.6.16-etercifs (на деле, это legacy для suse)
v2.6.23-etercifs
v2.6.24-etercifs
v2.6.25-etercifs
v2.6.26-etercifs
v2.6.27-etercifs
v2.6.28-etercifs
v2.6.29-etercifs
v2.6.30-etercifs

Аткуальные ветки с нашими патчами (в привязке к тегу v2.6.30)
etersoft-common
etersoft-mkdir
etersoft-getflk
etersoft-share-flags-etercifs

Дополнительные ветки с нашими патчами:
etersoft-posix-locks-etercifs
etersoft-posix-locks
etersoft-to-kernel
etersoft-share-flags
etersoft-oplocks
etersoft-include