Bug 8869

Summary: Регресс в CIFS'е на ядрах 3.x
Product: CIFS@Etersoft Reporter: Евгений Синельников <sin>
Component: блокировки файлов и доступAssignee: Pavel Shilovsky <piastry>
Status: CLOSED FIXED QA Contact: Евгений Синельников <sin>
Severity: normal    
Priority: P4    
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 8896    
Attachments: Вывод в dmesg для ядра 3.6.7-std-def-alt3

Description Евгений Синельников 2012-11-30 00:21:36 MSK
С некоторых пор в сериях ядер между 3.0 и 3.6 в CIFS появилась поломка, которая проявляется в неработоспособности автодополнения в bash. Сегодня у меня выявилась более серьёзная часть этой проблемы:
- не работает apt по протоколу file: через CIFS каталоги.

Выглядит проблема следующим образом:
 mkaptbox --apt-config ~/etc/apt.sisyphus-i586-etersoft.conf /tmp/hasher
Невозможно получить file:/var/ftp/pub/ALTLinux/Sisyphus/i586/base/pkglist.classic  File not found
Невозможно получить file:/var/ftp/pub/ALTLinux/Sisyphus/noarch/base/pkglist.classic  File not found
Невозможно получить file:/var/ftp/pub/Etersoft/LINUX@Etersoft/Sisyphus/i586/base/pkglist.addon  File not found
Невозможно получить file:/var/ftp/pub/Etersoft/LINUX@Etersoft/Sisyphus/i586/base/pkglist.nonfree  File not found
Невозможно получить file:/var/ftp/pub/Etersoft/LINUX@Etersoft/Sisyphus/noarch/base/pkglist.addon  File not found
Невозможно получить file:/var/ftp/pub/Etersoft/LINUX@Etersoft/Sisyphus/noarch/base/pkglist.nonfree  File not found
E: Некоторые индексные файлы не удалось скачать, они либо были проигнорированы, либо вместо них были использованы старые версии.

Проверено, на ядрах 3.0.13-std-def-alt0.M60P.1 и 3.0.51-std-def-alt0.M60P.1 проблема не проявляется.
На ядре 3.6.7-std-def-alt3 проблема имеется.


Файлы apt:
$ cat ~/etc/apt.sisyphus-i586-etersoft.conf
Dir::Etc::main "/dev/null";
Dir::Etc::parts "/var/empty";
Dir::Etc::SourceParts "/var/empty";

RPM::Ignore { "vim-plugin-vimruby"; };

Dir::Etc::SourceList    "/home/sin/etc/sources.sisyphus-i586-etersoft.list";
$ cat /home/sin/etc/sources.sisyphus-i586-etersoft.list
rpm file:/var/ftp/pub/ALTLinux/Sisyphus i586 classic
rpm file:/var/ftp/pub/ALTLinux/Sisyphus noarch classic

rpm file:/var/ftp/pub/Etersoft/LINUX@Etersoft/Sisyphus i586 addon nonfree
rpm file:/var/ftp/pub/Etersoft/LINUX@Etersoft/Sisyphus noarch addon nonfree
Comment 1 Евгений Синельников 2012-11-30 00:39:36 MSK
На ядре 3.0.51-std-def-alt0.M60P.1 в бранче p6 проверен etercifs
4.8.2 (сборка kernel-source-etercifs-2.6.39-1.71)
5.4.4 (сборка kernel-source-etercifs-3.0-1.74)

Проблема в этих сборках не выявлена...

Стоит отметить, что в бранч p6 приехала новая samba и пакет cifs-utils, что приводит к необходимости обновления etercifs.
Comment 2 Евгений Синельников 2012-11-30 00:44:26 MSK
Created attachment 2709 [details]
Вывод в dmesg для ядра 3.6.7-std-def-alt3

Вывод в dmesg при выполнении команды
$ mkaptbox --apt-config ~/etc/apt.sisyphus-i586-etersoft.conf /tmp/hasher

Перед эти установлен режим отладки:
# echo 1 > /proc/fs/cifs/cifsFYI
$ uname -r
3.6.7-std-def-alt3
Comment 3 Евгений Синельников 2012-11-30 01:37:03 MSK
Проверено на 3.4.20-un-def-alt0.M60P.1 с родным cifs и etercifs-5.4.4 (сборка kernel-source-etercifs-3.4-1.78). Работает...
Comment 4 Pavel Shilovsky 2012-12-07 21:25:43 MSK
Возможно, проблема связана с https://bugs.etersoft.ru/show_bug.cgi?id=8795.
Comment 5 Pavel Shilovsky 2012-12-09 11:30:42 MSK
Не обнаружил в описании баги, на какой машине проявляется, какой сервер монтируется, какие параметры.
Comment 6 Pavel Shilovsky 2012-12-11 19:36:28 MSK
Получил от sin@, доступ к машине. Исследовал проблему.

apt использует stat вызов для проверки доступности файла, что на 32 битной машине падает, если номера айнодов 64 битные. Поэтому нужно либо использовать stat64, либо компилировать с опцией -D_FILE_OFFSET_BITS=64. Так же есть вариант использовать опцию монтирования noserverino. Проблема повторяет то, что у нас было с WINE тут: http://bugs.etersoft.ru/show_bug.cgi?id=7302#c3.

Бага не в cifs - закрываю.
Comment 7 Евгений Синельников 2012-12-11 21:43:05 MSK
Составил задачу "Системный вызов stat() для проверки файлов" в багзиле ALTLinux:
https://bugzilla.altlinux.org/show_bug.cgi?id=28214

Вариант с опцией монтирования noserverino проверил - работает. Только не понятно, что при этом может сломаться.