Bug 5974

Summary: При запуске winelocktest на cifs ресурсе появляется ошибка.
Product: CIFS@Etersoft Reporter: Shestakov Dmitriy <mid>
Component: прочееAssignee: Александр Морозов <amorozov>
Status: CLOSED FIXED QA Contact: Marat Sharipov <regan>
Severity: minor    
Priority: P4 CC: amorozov, lav, night, piastry
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 5634    

Description Shestakov Dmitriy 2010-09-08 19:29:48 MSD
eter7/eter12
Тип лицензии: Network на 1-го пользователя.
При запуске winelocktest на смонтированном cifs ресурсе появляется окно:
"Запущенно больше экземпляров wine, чем это разрешенно лицензией".

На локальных ресурсах этого сообщения не появляется.
Comment 1 Shestakov Dmitriy 2010-09-09 18:24:18 MSD
На других типах лицении это не появляется.
Comment 2 Сычев Александр 2010-09-13 14:57:03 MSD
Сделал заказ на WINE@Etersoft 1.0 Network (лицензия на 1 пользователя, электронная версия), жду подтверждения и ссылки на скачивание
Comment 3 Shestakov Dmitriy 2010-09-13 19:56:15 MSD
Нужен результат. Все лицензии есть в /var/ftp/pvt/Etersoft/WINE@Etersoft/license..
Нужная тебе называется wine-etersoft-2.lic. На нее делаешь симлин с из /etc/wine.
Comment 4 Денис Баранов 2010-09-14 19:07:55 MSD
Проверил на WINE@Etersoft SQL для 1 пользователя, ошибка проявляется, значит на Network тоже.
Comment 5 Денис Баранов 2010-09-14 19:18:25 MSD
*** Bug 5989 has been marked as a duplicate of this bug. ***
Comment 6 Александр Морозов 2010-09-15 19:48:51 MSD
Перевод в po/ru.po неправильный:

#: eterx11msg/eterx11msg.c:187
msgid ""
"You have used more simulateously running Wine process\n"
"than it is possible via license."
msgstr ""
"Запущено больше экземпляров Wine,\n"
"чем это разрешено лицензией."

Да и сообщение на английском не очень. Данная ошибка выдаётся в случае, если файл пытаются открыть больше процессов, чем прописано в поле COUNT_LICENSE в файле лицензии.
Comment 7 Александр Морозов 2010-09-15 21:23:33 MSD
Сообщение заменил на такое:
#: eterx11msg/eterx11msg.c:187
msgid ""
"License limitation: the number of processes\n"
"sharing a single file is exceeded"
msgstr ""
"Лицензионное ограничение: превышено число процессов,\n"
"совместно использующих один файл"
Comment 8 Александр Морозов 2010-09-15 21:34:20 MSD
Ошибка на CIFS появляется из-за того, что один процесс под WINE не может открыть больше COUNT_LICENSE файлов. Это вызвано тем, что на CIFS у одного процесса не получается 2 раза установить блокировку на запись на одно и то же место. Думаю, надо сделать, чтобы CIFS в данном случае вёл себя также, как и NFS.

Проблему можно увидеть с помощью winelocktest. Вот эти строчки как раз являются её результатом:
Test failed: creating "winelocktest_write" failed
Test failed: opening "winelocktest_write" failed
Test failed: creating "winelocktest_write" failed
Comment 9 Александр Морозов 2010-09-16 15:11:53 MSD
Клиент atlant: 2.6.32-std-def-alt16
Сервер cellar: 2.6.32-ovz-smp-alt5
winelocktest запускался на клиенте
Использовалась лицензия с COUNT_LICENSE=1
Опции монтирования: user=guest,pass=,rw,iocharset=utf8,noperm,wine
В smb.conf на сервере есть следующие опции:
lock spin time = 0
socket options = TCP_NODELAY
use sendfile = yes
strict locking = no
posix locking = false
Comment 10 Александр Морозов 2010-09-16 15:12:18 MSD
etercifs-4.5.1.4-alt1
Comment 11 Pavel Shilovsky 2010-09-17 10:08:36 MSD
Согласно http://msdn.microsoft.com/en-us/library/aa365203(VS.85).aspx:
  "Exclusive locks cannot overlap an existing locked region of a file."

Потому самба сервер удаленно и клиент локально (при Exclusive oplock в 4.5.1.4 и 4.5.1.5) ведёт себя вполне корректно, запрещая устанавливать блокировку на одно и тоже место.

Так как это особенности Samba протокола, то сделать так, чтобы CIFS вёл себя как NFS не представляется возможным без изменения самого протокола.
Comment 12 Александр Морозов 2010-09-17 16:30:10 MSD
А так, чтобы Linux-клиенты могли ставить блокировку на одно место сколько угодно раз, можно сделать? Всё таки нам надо по возможности придерживаться POSIX.
Comment 13 Александр Морозов 2010-09-17 16:56:15 MSD
Я к тому, что, может быть, можно обрабатывать случай с пересекающимися блокировками на клиенте, а потом отправлять (или не отправлять, если блокировка полностью совпадает с уже поставленной) запрос samba-серверу. В таком случае протокол не меняется.
Comment 14 Pavel Shilovsky 2010-09-17 23:08:00 MSD
В случае, когда у нас есть блокировка полностью включается в уже установленную, проблем с кешированием нет. Если же она больше или пересекается, то возникают проблемы. По хорошему, в этом случае можно отсечь куски блокировки, которые существующая блокировка не затрагивает, и отправить их на сервер. Но у нас может быть вариант, когда одна блокировка затрагивает сразу несколько уже существующих, и механизм мержинга существенно осложняется.
Comment 15 Александр Морозов 2010-09-18 22:28:21 MSD
Поправил закрытую часть так, чтобы на cifs при неудачном завершении F_SETLK проверялось, не поставил ли уже процесс данную блокировку.

2 baraka:
Надо протестировать на CIFS и NFS, не сломалась ли проверка на число пользователей.
Comment 16 Денис Баранов 2010-12-03 18:57:36 MSK
Проверь пожалуйста.
Comment 17 Shestakov Dmitriy 2010-12-06 10:52:37 MSK
> 2 baraka:
> Надо протестировать на CIFS и NFS, не сломалась ли проверка на число
> пользователей.
Comment 18 Marat Sharipov 2010-12-10 17:56:30 MSK
wine network 7.31/15 etercifs 4.5.7 ubuntu 10.10 лицензии на 1 и на 7 человек
winelocktest успешно проходит и на cifs и на nfs
Comment 19 Александр Морозов 2010-12-10 18:37:20 MSK
> > Надо протестировать на CIFS и NFS, не сломалась ли проверка на число
> > пользователей.
Что насчёт проверки работы ограничения на число пользователей, одновременно работающих с файлом?
Проверить можно, например, с помощью 1С. В базу одновременно должно входить не более записанного в лицензии числа пользователей. 1С для проверки надо запускать либо под разными пользователями, либо в разных wineprefix (например, в разных бутылках).
Comment 20 Marat Sharipov 2010-12-10 20:20:55 MSK
wine network 7.31/15 etercifs 4.5.7 ubuntu 10.10 лицензия на 1 человека
через ssh под 2 разными пользователями подключится к одной и той-же базе находящейся на смонтированном cifsom диске не удалось (ошибка блокировки метаданных) к разным базам с 1 машины подключается без проблем. 
vbox ubuntu10.10 1с77 база //cellar/sharewine/alfa auto 1c77
Comment 21 Marat Sharipov 2011-01-04 17:47:50 MSK
Принято