Bug 6777

Summary: Тестирование различных версий Samba сервера с strictcache в CIFS
Product: CIFS@Etersoft Reporter: Pavel Shilovsky <piastry>
Component: блокировки файлов и доступAssignee: Pavel Shilovsky <piastry>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: normal    
Priority: P3 CC: baraka, lav, mid, sin
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 6773, 6818, 6870, 6887, 6974    
Bug Blocks:    
Deadline: 2011-04-15   
Attachments: Скрипт, выявляющий проблемы Samba
Скрипт, версия 2
Скрипт, версия 3

Description Pavel Shilovsky 2011-01-14 10:38:20 MSK
Created attachment 2094 [details]
Скрипт, выявляющий проблемы Samba

Режим strictcache, разработанный при решении этой баги (http://bugs.etersoft.ru/show_bu7g.cgi?id=6227) сильно зависит от правильного поведения Samba сервера по выдаче оплоков. Было замечено неправильное поведение в альфе 4-ой Samba и pre 3.6 Samba. Потому надо проверить Samba различных версий.
1) Ubuntu 10.04.
2) Ubuntu 10.10.
3) Fedora 13, 14.
5) ALT Linux 5.1.
6) ALT Linux Sisyphus.
7) SUSE 11.2.
8) Mandriva 2010.1.
9) Samba 3.6.(upstream).
10) Samba 4.0 (upstream).

При обнаружении неточности работы надо довести её до сведения разработчиков. Скрипт для тестирования в приложении.
Comment 1 Pavel Shilovsky 2011-01-14 12:25:42 MSK
При работе с vbox контейнером обнаружил, что большинство машин не имеет доступ к себе по различным причинам: неправильный айпи, отсутствие айпи и ностнэйма (вывод vbox -l на euclid). Получилось настроить шару только на
192.168.4.232 SUSE 11.2
192.168.4.219 Mandriva 2010.0 x86_64
192.168.4.239 Ubuntu 10.04

37 яро получилось поставить только на Ubuntu 9.10 (ещё была доступна Ubuntu 10.04, но она использовалась ещё кем-то), после чего та ушла в даун и больше не возвращалась. На этом решено было закончить с vbox-контейнером до разъяснения ситуации.
Comment 2 Pavel Shilovsky 2011-01-14 15:28:40 MSK
Скомпилировал Samba-3.6-pre1 и протестировал у себя на ноуте. Так же протестировал ещё раз с Ubuntu 10.10. Оба теста прошли успешно.

Попробовал с Windows 7. Проблема себя показала. Провёл исследование этой проблемы (см вот это тред http://www.mail-archive.com/linux-cifs@vger.kernel.org/msg00805.html). Выяснилось, что сервер смотрит на поле OplockLevel в ack со стороны клиента на oplock break. В документации по этому поводу ничего конкретного не сказано. Сделал небольшой патч, который исправляет поведение клиента - подтверждаем значение OplockLevel в ack (а не игнорируем, как сейчас), выставил небольшую задержку, чтобы сервер успевал отослать оплок брейк после write запроса клиенту, и тест прошёл.

Таким образом предположение Jeff'а Laython'a подтвердилось. Буду писать об этом в апстрим  и прокидывать патч.
Comment 3 Pavel Shilovsky 2011-01-14 15:30:04 MSK
Created attachment 2095 [details]
Скрипт, версия 2
Comment 4 Pavel Shilovsky 2011-01-14 15:30:23 MSK
Created attachment 2096 [details]
Скрипт, версия 3
Comment 5 Pavel Shilovsky 2011-01-14 20:58:53 MSK
Оформил патч, решающий данную проблему. Заодно выявил ещё одну проблему с оплоками, решение которой тоже включил в этот патч. Как патч одобрят, соберу новые сборки etercifs-4.7.x (c writepages патчем и без него).
Comment 6 Pavel Shilovsky 2011-01-17 11:30:07 MSK
Попробовал vbox -l на euclid. Без изменений.
Примеры неправильной работы:
1) ||running | ALTLinux 5.1 | 92934d16-b2d8-4bf6-8d8f-f77bc641017e |                  alt-linux-5-1 | 192.168.4.101 ||

Не отзывается по айпи 192.168.4.101:

[piastry@euclid ~]$ ping 192.168.4.101
PING 192.168.4.101 (192.168.4.101) 56(84) bytes of data.
From 192.168.0.23 icmp_seq=1 Destination Host Unreachable

2) || saved | Ubuntu 10.10 | 97c74176-376e-4c69-8a74-9a7ad9f7a7a1 |                                |                 ||

Айпи и хостнэйм вообще не указаны.
Comment 7 Pavel Shilovsky 2011-01-17 14:37:15 MSK
Собрал Samba-4.0.0-alpha14 и протестировал на ней. Результаты Windows 7 подтвердились.

В процессе тестирования натолкнулся на багу Samba. Сервер может выдать клиенту оплок на чтение в случае если этот файл уже открыт другим клиентом, установившим на него блокировку на запись. В результате когда мы читаем первым клиентов (всю страницу), чтение падает с ошибкой. На Windows 7 поведение правильное - клиенту в таком случае не выдаётся оплок. Буду более тщательно разбираться и писать в апстрим Samba в случае подтверждения.
Comment 8 Pavel Shilovsky 2011-01-17 16:35:19 MSK
Проблема проявляется только на Samba-4.0.0. Посмотрел код Samba - не нашёл похожей проверки ни в исходниках 3-ей, ни в исходниках 4-ой версии. Дальше планирую написать разработчикам с просьбой прокомментировать данную ситуацию.
Comment 9 Pavel Shilovsky 2011-01-17 19:01:58 MSK
Завёл багу https://bugzilla.samba.org/show_bug.cgi?id=7923.
Comment 10 Pavel Shilovsky 2011-01-17 20:34:39 MSK
Обсудил с Джефон Лэйтоном ситуацию по патчу и получил замечание по патчу с оплоками. Поправил патч, потестировал, пересоздал ветки и залил их на git.eter форсом.
Comment 11 Pavel Shilovsky 2011-01-21 10:42:02 MSK
Завёл багу http://bugs.etersoft.ru/show_bug.cgi?id=6818, без решения которой, решение текущей баги представляется маловероятным.
Comment 12 Евгений Синельников 2011-01-21 11:48:13 MSK
(В ответ на comment #11)
> Завёл багу http://bugs.etersoft.ru/show_bug.cgi?id=6818, без решения которой,
> решение текущей баги представляется маловероятным.

Паша, может быть тебе имеет смысл использовать локальные виртуалки для своих тестов? Для этого было бы желательно найти подготовленные vdi образы.
Comment 13 Pavel Shilovsky 2011-01-21 12:07:13 MSK
(В ответ на comment #12)
> (В ответ на comment #11)
> > Завёл багу http://bugs.etersoft.ru/show_bug.cgi?id=6818, без решения которой,
> > решение текущей баги представляется маловероятным.
> 
> Паша, может быть тебе имеет смысл использовать локальные виртуалки для своих
> тестов? Для этого было бы желательно найти подготовленные vdi образы.

Мне кажется нет смысла поднимать дублирующую инфраструктуру всего лишь из-за того, что существующая работает неправильно. Если привести её в порядок, то всем будет удобно пользоваться одной. Это искоренит проблемы вида: "у меня всё работает - проблема у вас локальная" - тестер и разработчик смогут говорить об одном и том же окружении.
Comment 14 Pavel Shilovsky 2011-02-01 22:38:43 MSK
Создал скрипты, воспроизводящие все три проблемы Samba-3, которые исправляются вышеописанными тремя патчами. Далее надо портировать их в RECT.
Comment 15 Pavel Shilovsky 2011-03-23 15:10:07 MSK
Протестировал на тестах RECT. Cервера из Ubuntu 10.04, Fedora 13 Russian, OpenSuse 11.3 прошли тесты.

Обнаружил неправильное поведение тестов при работе с  Samba в OpenSuse 11.2. Далее буду разбираться, в чём тут проблема.
Comment 16 Pavel Shilovsky 2011-03-24 15:29:38 MSK
Завершил тестирование.
Итоги: все сервера кроме вышеописанной версии из OpenSUSE-11.2 прошли тесты на оплоки при работе с новым режимом strict cache.

По поводу OpenSUSE-11.2: данная версия работает неправильно и со старым direct режимом, хотя количество непройденных тестов для этих режимов различается на один. Проверил данный тест и выяснил, что Samba при определённой раскладе записывала данные не в начало файла, а в конец. Скорее всего это обусловлено последовательностью вызовов записи (так как в этих режимах они отсылаются не в одинаковом порядке). Таким образом данную сборку предлагаю считать не поддерживаемой для обоих режимов работы:
guest@linux-crjs:~> /usr//sbin/smbd -V
Version 3.4.3-3.3.1-2341-SUSE-SL11.2

Бага решена.
Comment 17 Денис Баранов 2011-03-24 16:11:20 MSK
Принято.
Comment 18 Pavel Shilovsky 2011-03-24 16:14:28 MSK
Закрываю.