Bug 1153

Summary: 1С 8.x: Совместная работа по CIFS
Product: CIFS@Etersoft Reporter: Boris Savelev <boris>
Component: блокировки файлов и доступAssignee: Евгений Синельников <sin>
Status: CLOSED INVALID QA Contact:
Severity: blocker    
Priority: P1 CC: alexeev, baraka, boris, kipruss, kondratyuk, lav, lbeasty, leonid, pav, pv
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 2035, 2543, 2550, 2599, 2639, 2640    
Bug Blocks: 1505, 1687, 2440, 3044, 3305    
Deadline: 2008-11-07   

Description Boris Savelev 2008-02-14 12:10:33 MSK
не работает совместная работа 1cv80 и 1cv81 по CIFS с нашим модулем 1.50с.
с 1cv77 все нормально.
Проявляется так:
SAMBA-share:
Linux alone - OK
Windows after Linux - OK
Linux after Windows - FAIL
Ошибка доступа к файлу "Z:\1c81base\1cv8.pfl"
Notepad: "Sharing violation"

WINDOWS-share:
Linux alone - OK
Windows after Linux - OK
Linux after Windows - FAIL
Ошибка доступа к файлу "Z:\1c81base\1cv8.pfl"
Notepad: "Sharing violation"

Linux -- WINE@Etersoft 1.0.8 SQL.
libwine-20071130-eter9
wine-etersoft-network-1.0.8-eter7
wine-20071130-eter9
linux-cifs-1.50c-eter2

Проверялось на FC7, ALTlinux
Kernels
2.6.23.15-80.fc7
2.6.18-ovz-smp-alt18

Command mount
mount -t cifs //win2k3/1c81base /mnt/cifs/ -o uid=guest,gid=guest,file_mode=0660,dir_mode=0770

mount -t cifs //cellar/sharewine /mnt/cifs/ -o uid=guest,gid=guest,file_mode=0660,dir_mode=0770
Comment 1 Boris Savelev 2008-02-14 12:12:31 MSK
надо ли проверить совместную работу 2х Linux-клиентов 1cv80/1cv81 по NFS/CIFS?
Comment 2 otpechatok 2008-02-14 16:36:50 MSK
(In reply to comment #1)
> надо ли проверить совместную работу 2х
> Linux-клиентов 1cv80/1cv81 по NFS/CIFS?
> 

Думаю - да.
Т.к. работа только одного Линукс клиента маловероятна.
Comment 3 Vitaly Lipatov 2008-02-14 20:54:01 MSK
Не важно, 8.0 или 8.1.
Главное не пытаться проверять смесь NFS/CIFS :)
По сути от NFS проблем не ожидается (раз она поддерживает большие файлы, значит и большие блокировки тоже), CIFS же вообще не ясно как может не работать для 8.0, нужно смотреть что по тесту от двух пользователей получается. 
Comment 4 Boris Savelev 2008-02-20 15:21:18 MSK
Заявка 3056
Comment 5 Александр Пликус 2008-03-25 12:40:31 MSK
СРОЧНО!!!
Comment 6 Boris Savelev 2008-03-26 14:27:36 MSK
проверил под виндой с самба шарой cellar. все нормально.
настроил 1c под своим аккаунтов в винде.
пользователь boris
пароль 111
Comment 7 Pavel Vainerman 2008-04-02 22:53:21 MSD
Небольшой предварительный отчёт:
================================
На данный момент сделаны (на основе старых) два теста
wintestwrite64 и lintestread64 (wine-etersoft-devel/samba).
(для тестирования в обоих программах необходимо объявлять,
одинаковые W_OFFSETxx).

Если они корректны, то при помощи них обнаружено, что блокировка
выше 2Gb не видна на cifs.







Comment 8 Pavel Vainerman 2008-04-02 23:00:28 MSD
хм... есть мнение, что этого быть не может, 
так как всё-таки 1cv80 работает... 

(Всё таки надо искать в районе oplock). Для этого
нужно (будет) написать два теста (под win и lin),
c задействованием oplock.
Comment 9 Boris Savelev 2008-04-03 11:20:34 MSD
я могу помочь чем-нибудь?
Comment 10 Pavel Vainerman 2008-04-04 22:42:49 MSD
По результатам тестирования обнаружен следующий требующий выяснения момент:
в запросах на открытие файла, (в логах самбы) наблюдается следующий флаг:
"access_mask". При запуске одной и той же программы из windows и linux,
в логах самбы этот флаг разный.
при запуске из под linux: access_mask = 0x120089.
при запуске из под windows: access_mask = 0x20089.

Теперь надо выяснить, что это за флаг такой...

P.S. Тестировал с машин atlant и win2k. 
Запускал программу openfile из "wine-etersoft-devel/file".
Comment 11 Pavel Vainerman 2008-04-04 23:00:58 MSD
Некоторое дополнение:
TЕсли просто запустить про-гу отдельно под win и отдельтно под lin,
то:

WIN:  
reply_ntcreate_and_X:  flags  =  0x16,  access_mask  = 0xa1
file_attributes = 0x0, share_access = 0x5,  create_disposition = 0x1
create_options  =  0x40 root_dir_fid = 0x0 

LIN: 
reply_ntcreate_and_X: flags = 0x2, access_mask = 0x80000000  
file_attributes =  0x80,  share_access = 0x7, create_disposition = 0x1 
create_options = 0x40 root_dir_fid = 0x0

После чего в логах самбы для lin-машины есть вызов:
se_map_generic(): mapped mask 0x80000000 to 0x00120089
А в логах win-машины такого преобразования нет.




Comment 12 Евгений Синельников 2008-10-13 04:10:42 MSD
Просьба прояснить параметры монтирования и состяние etercifs во время проблемных тестов. Дело в том, что на уровне блокировок наблюдается некоторое отличие в поведении модуля cifs в зависимости от того включены или нет LinuxExtensions.

Хотелось бы уточнить зависит ли текущая проблема от состояния включенности LinuxExtensions. Напомню, что ранее LinuxExtensions использовался для отлкючения отправки авторизационной информации об идентификаторах, а также именах, пользователей и групп. Для включения аналогичного поведения при включенных LinuxExtensions, сетевой каталог необходимо монтировать с опцией noperm.

В новых сборках мы планируем убрать отлкючение LinuxExtensions, потому хотелось бы проянснить потенциальные проблемы... Кроме того совершенно не ясно, как с этим обстоят дела сейчас и в каких режимах проводятся теущие тесты, для которых выявлены проблемы...
Comment 13 Евгений Синельников 2008-10-13 22:44:00 MSD
Итак, я сегодня завёл 1C на двух машинах, и проверил подключение к пустой базе.... У меня получилось... Список активных пользователей показывает два компьютера... Может это не полноценная проверка, но уже что-то...

Текущие параметры установки:
- ALT Linux Sisyphus
- 2.6.25-std-def-alt9
- 1Cv81-8.1.11.67-Windows-i386
- wine-1.0.9-alt24.i586.rpm
- wine-etersoft-sql-1.0.9-alt5.i586.rpm
- linux-cifs-3.2-alt1.src.rpm

Теперь необходимо запустить это на рабочей базе... И сформировать набор эквивалентных тестов.
Comment 14 Евгений Синельников 2008-10-13 22:51:35 MSD
Не знаю существенно ли это, но хочу записать, что при установке было замечено:
а) При отсутствии пакета fonts-ttf-ms размер шрифта в инсталяторе выбирается неверно (слишком мелкий - еле разборчивый и мутный)...
б) При выборе в winecfg версии Windows XP, для запуска инсталятора необходимо запускать winexp. Это странно, что обработчик запуска приложений не меняется сам, а также, что программа при этом валится...
Comment 15 Vitaly Lipatov 2008-10-14 01:20:40 MSD
(In reply to comment #14)
> Не знаю существенно ли это, но хочу
> записать, что при установке было замечено:
> а) При отсутствии пакета fonts-ttf-ms размер
> шрифта в инсталяторе выбирается неверно
> (слишком мелкий - еле разборчивый и
> мутный)...
Ну надо было в отдельную багу. Вообще надо сравнить с ситуацией при наличии fonts-ttf-liberation

> б) При выборе в winecfg версии Windows XP, для
> запуска инсталятора необходимо запускать
> winexp. Это странно, что обработчик запуска
> приложений не меняется сам, а также, что
> программа при этом валится...
Так устроен мир :)

Comment 16 Pavel Vainerman 2008-10-14 01:40:51 MSD
На всякий напомню, что проблемма зависит от 
последовательности запуска.
Кто первее Lin или Win запускается...
(см. начальный пост этого бага).

Comment 17 Евгений Синельников 2008-10-14 01:52:04 MSD
(In reply to comment #16)
> На всякий напомню, что проблемма зависит от 
> последовательности запуска.

Спасибо... Действительно, я это упустил... Хотя доступно вроде написано... ;)

Проверять такой вариант по-сложнее... Нужно где-то найти винду... 

В общем,тогда для полноты картины, не хватает варианта Windows after Windows... Это даст много полезных сведений... Думаю, что возможно проблема на самбе. Это будет очевидно, если проблема Windows after Windows тоже себя проявит на самбе, в то время как на винде такое решение, если я правильно всё понимаю, вполне себе работоспособно...


Comment 18 Konstantin Baev 2008-10-14 17:04:49 MSD
Запустили на трех линукс-хостах и одной виндовс-виртуалке (WinXP).

1с - содержимое папки 1Cv81-8.1.11.67-Windows-i386

wine-1.0.9-alt24
libwine-1.0.9-alt24
linux-cifs-3.2-alt2
haspd-2.0-alt10
haspd-modules-2.0-alt10
wine-etersoft-sql-1.0.9-alt5

Видно сразу 4 активных пользователя.

Вначале были сообщения о недоступности какого-то файла. При нажатии кнопки "перезагрузить" все было нормально. Если ещё появится эта ошибка - посмотрим подробнее.
Comment 19 Konstantin Baev 2008-10-14 17:26:38 MSD
(In reply to comment #16)
> На всякий напомню, что проблемма зависит от 
> последовательности запуска.
> Кто первее Lin или Win запускается...
> (см. начальный пост этого бага).
> 

Сейчас позапускал с разной последовательностью. Ошибок не поймал. Возможно, из-за того, что Винда в виртуалке...
Comment 20 Konstantin Baev 2008-10-14 17:32:04 MSD
Нам нужна база, потому что мы проверяем на пустой базе.
Comment 21 Konstantin Baev 2008-10-14 17:36:28 MSD
*** Bug 2599 has been marked as a duplicate of this bug. ***
Comment 22 Евгений Синельников 2008-10-14 21:46:16 MSD
Получил базу... на шаре с etercifs 1cv8.exe съедает 98% процессорного времени. Хотя, если перенести файлы на локальную ФС, всё запускается... Не могу понять из-за чего проблема, протестировать на обычном тоже cifs не удаётся из-за тогда, что WINE@Etersoft валится в assertion.

Итого, для изучения проблемы хотелось бы оторвать проверку на драйвер. До проверки нескольких пользователей дело пока не дошло - есть ещё проблемы...
Comment 23 Vitaly Lipatov 2008-10-14 21:47:33 MSD
Глупости, не надо открывать никакую проверку.
Если ты хочешь убрать специфичные для etercifs изменения (кроме битов для open), ну так убери и сделай сборку без них.
Comment 24 Евгений Синельников 2008-10-31 01:17:41 MSK
Насколько я понимаю, вопрос совместной работы на уровне запуска уже решён...
Для этого необходимовключить LinuxExtensions...

Сейчас, я полагаю, что etercifs уже не имеет к этому отношение, поскольку 1C способна запуститься и без использования Shared-flags.

Какова же роль Shared-flags в других файловы операциях, в частности блокировках блоков файла, нужно ещё выяснять...

Не ясным же остаётся и вопрос о том, какие блокировки на каких уровнях использует 1С... Пока я полагаю, что
1) 1С использует Shared-flags в так называемом монопольном режиме. Мною это пока не проверялось... Нужно будет проверить...
2) Во время совместной работы используются обычные файловые блокировки для разных частей базы, для чего Shared-flags не подходят, поскольку лочат файл целиком на стадии открытия... 

Получается, что Shared-flags нужны в исключительных случаях монопольного режима работы 1С. При использовании этого режима во время совместной работы других пользователей, может всплыть проблема с oplocks, которые должны корректно обрабатываться на клиентах...

Из этого я делаю вывод, что текущая реализация драйвера, при отключении LinuxxExtensions, отрубает нормальное функционирование обычных файловых блокировок на блоках файла. С этим надо разбираться...

Кроме того тесты показали, что полноценной поддержки Shared-flags в нашем cifs пока нет... Необходимо детально рассмотреть к каким следствиям приводит открытие файлов в режимах при работе с файлами... На стадии открытия, установка Shared-флагов из-под Linux, к адекватным последствиям не приводит... В большинстве варантоа, файлы пермещаются, удаляются, пишутся и читаются, при установке соотвественно O_DENYDELETE, O_DENWRITE и O_DENYREAD...
Comment 25 Leonid Shadevsky 2008-11-02 16:45:38 MSK
(In reply to comment #0)
> с 1cv77 все нормально.
> Проявляется так:
> SAMBA-share:
> Linux alone - OK
> Windows after Linux - OK
> Linux after Windows - FAIL
> Ошибка доступа к файлу "Z:\1c81base\1cv8.pfl"
> Notepad: "Sharing violation"

В 1с77, при такой последователности подключений к базе, ситуация аналогична 1с8.x:  выводится "Ошибка при запуске журнала регистрации"

Воспроизведено на mandriva 2009 + winXP, etercifs 3.6.1 и 3.7
Есть заявка по этой проблеме: http://rt.etersoft.ru/Ticket/Display.html?id=8762
Comment 26 Константин Кондратюк 2008-11-07 10:42:10 MSK
ASP Linux 12 (ядро 2.6.23)
ALT Linux 4.1 (2.6.25-std-def-alt10)

База на линуксовой или виндовой шаре - не важно.

Второго пользователя не пускает с ошибкой при запуске журнала регистрации.
Если предварительно открыть журнал с помощью "tail -f", то не пускает уже первого пользователя.

Воспроизведение - пока 100%
Comment 27 Alynx 2008-11-08 01:22:11 MSK
А почему linux-eter cifs 1.54 под Mandriva 2008 снимает блокировки и 1сv77 работает. А linux-cifs-3.2 под Мандрива 2009 блокирует файлы 1с. Почему нельзя переписать cifs 1.54 под 2009. Там все работало. После установки cifs 1.54 делаю service linux-cifs build выдает ошибку . Напишу подробности в понедельник
Comment 28 Alynx 2008-11-08 01:45:09 MSK
А почему linux-eter cifs 1.54 под Mandriva 2008 снимает блокировки и 1сv77 работает. А linux-cifs-3.2 под Мандрива 2009 блокирует файлы 1с. Почему нельзя переписать cifs 1.54 под 2009. Там все работало. После установки cifs 1.54 делаю service linux-cifs build выдает ошибку . Напишу подробности в понедельник
Comment 29 Vitaly Lipatov 2008-11-09 00:29:18 MSK
Проблема начиная с комментария #25, была внесена в закрытой части сборка 11 и исправлена в eter12.

P.S.
Багу испортили комментариями совершенно по другой проблеме.
Comment 30 Konstantin Baev 2009-01-23 15:08:25 MSK
Поскольку описанная проблемы с использованием etercifs потеряла актуальность, а сообщения >25 относятся к другой проблеме, мне здесь кажется интересным только сообщение http://bugs.etersoft.ru/show_bug.cgi?id=1153#c24
Думаю, багу стоит закрыть, а указанное сообщение не потерять, сославшись на него на странице Вики, где описываются и обсуждаются проблемы etercifs: http://wiki.office.etersoft.ru/testing/cifs/ - и далее по ссылкам.