Bug 4370

Summary: Проблемы CIFS с параметром direct
Product: CIFS@Etersoft Reporter: Евгений Синельников <sin>
Component: блокировки файлов и доступAssignee: Pavel Shilovsky <piastry>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: baraka, lav
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 4737    
Bug Blocks: 3043, 4155, 4292    

Description Евгений Синельников 2009-10-16 16:02:05 MSD
Выявлено несколько проблем, связанных с этим параметром:
- Во-первых, на смонтированном разделе не запускаются приложения (не работает exec)
$ ls -l raw7
-rwxr-xr-x 1 nobody users 12471 Окт 15 19:50 raw7

$ ./raw7
bash: ./raw7: не могу запустить бинарный файл

$ strace ./raw7
execve("./raw7", ["./raw7"], [/* 67 vars */]) = -1 ENOEXEC (Exec format error)
dup(2)                                  = 3
fcntl64(3, F_GETFL)                     = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat64(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 24), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb802f000
_llseek(3, 0, 0xbfa4a918, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(3, "strace: exec: Exec format error\n", 32strace: exec: Exec format error
) = 32
close(3)                                = 0
munmap(0xb802f000, 4096)                = 0
exit_group(1)                           = ?

Во-вторых, без монтирования с параметром noperm возникают проблемы доступа, даже для каталогов, куда доступ разрешён.
http://bugs.etersoft.ru/show_bug.cgi?id=4292#c13
Comment 1 Евгений Синельников 2009-10-27 23:31:10 MSK
Пока вопросы с проблемой readpage тестируются в etercifs-4.4.x пора приступать к проблемам direct.
Comment 2 Pavel Shilovsky 2009-10-29 12:11:06 MSK
Патч, решающий проблему выполнения файлов:

http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=commitdiff;h=108b485ed2f25cca3bcec0554bddb76f293c27aa



Проблемы доступа обнаружить пока не удалось:

[piastry@tartarus ~]$ sudo mount -t cifs //localhost/public m -ouser=piastry,direct
[piastry@tartarus piastry_test]$ pwd
/home/piastry/m/piastry_test
[piastry@tartarus piastry_test]$ ls -l
итого 0
-rw-r--r-- 1 piastry piastry 0 Окт 28 11:57 eee
-rw-r--r-- 1 piastry piastry 0 Окт 28 12:00 eee2
[piastry@tartarus piastry_test]$ touch eee3
[piastry@tartarus piastry_test]$ ls -l
итого 0
-rw-r--r-- 1 piastry piastry 0 Окт 28 11:57 eee
-rw-r--r-- 1 piastry piastry 0 Окт 28 12:00 eee2
-rw-r--r-- 1 piastry piastry 0 Окт 29 11:59 eee3
Comment 3 Vitaly Lipatov 2009-11-27 01:08:00 MSK
Хотелось бы понять, вошёл ли этот патч в какую-либо сборку etercifs
Comment 4 Евгений Синельников 2009-12-16 17:23:45 MSK
(In reply to comment #3)
> Хотелось бы понять, вошёл ли этот патч в
> какую-либо сборку etercifs
> 

Я указывал на порядок внесения патчей здесь:
http://wiki.etersoft.ru/Etercifs/Changelog
Но, вместе, с этой страницей:
http://wiki.etersoft.ru/Etercifs
всё перепуталось... Нужного текста там нет.

Comment 5 Vitaly Lipatov 2009-12-16 17:54:39 MSK
Страницы исправил.
Comment 6 Евгений Синельников 2009-12-16 18:00:42 MSK
(In reply to comment #3)
> Хотелось бы понять, вошёл ли этот патч в
> какую-либо сборку etercifs
> 

Если не ошибаюсь, он полагался быть в 4.4.1

Я выложил к себе в git тестовые ветки:
To git.eter:packages/cifs-2.6
 * [new branch]      legacy-centos52-etercifs-testing ->
legacy-centos52-etercifs-testing
 * [new branch]      legacy-centos52-etercifs-testing2 ->
legacy-centos52-etercifs-testing2
 * [new branch]      legacy-centos53-etercifs-testing ->
legacy-centos53-etercifs-testing
 * [new branch]      legacy-centos53-etercifs-testing2 ->
legacy-centos53-etercifs-testing2
 * [new branch]      legacy-etercifs-testing -> legacy-etercifs-testing
 * [new branch]      legacy-etercifs-testing2 -> legacy-etercifs-testing2
 * [new branch]      v2.6.16-etercifs-testing -> v2.6.16-etercifs-testing
 * [new branch]      v2.6.16-etercifs-testing2 -> v2.6.16-etercifs-testing2
 * [new branch]      v2.6.23-etercifs-testing -> v2.6.23-etercifs-testing
 * [new branch]      v2.6.23-etercifs-testing2 -> v2.6.23-etercifs-testing2
 * [new branch]      v2.6.24-etercifs-testing -> v2.6.24-etercifs-testing
 * [new branch]      v2.6.24-etercifs-testing2 -> v2.6.24-etercifs-testing2
 * [new branch]      v2.6.25-etercifs-testing -> v2.6.25-etercifs-testing
 * [new branch]      v2.6.25-etercifs-testing2 -> v2.6.25-etercifs-testing2
 * [new branch]      v2.6.26-etercifs-testing -> v2.6.26-etercifs-testing
 * [new branch]      v2.6.26-etercifs-testing2 -> v2.6.26-etercifs-testing2
 * [new branch]      v2.6.27-etercifs-testing -> v2.6.27-etercifs-testing
 * [new branch]      v2.6.27-etercifs-testing2 -> v2.6.27-etercifs-testing2
 * [new branch]      v2.6.28-etercifs-testing -> v2.6.28-etercifs-testing
 * [new branch]      v2.6.28-etercifs-testing2 -> v2.6.28-etercifs-testing2
 * [new branch]      v2.6.29-etercifs-testing -> v2.6.29-etercifs-testing
 * [new branch]      v2.6.29-etercifs-testing2 -> v2.6.29-etercifs-testing2
 * [new branch]      v2.6.29-etercifs-testing3 -> v2.6.29-etercifs-testing3
 * [new branch]      v2.6.30-etercifs-testing -> v2.6.30-etercifs-testing
 * [new branch]      v2.6.30-etercifs-testing2 -> v2.6.30-etercifs-testing2
 * [new branch]      v2.6.30-etercifs-testing3 -> v2.6.30-etercifs-testing3
 * [new branch]      v2.6.31-etercifs-testing -> v2.6.31-etercifs-testing
 * [new branch]      v2.6.31-etercifs-testing2 -> v2.6.31-etercifs-testing2
 * [new branch]      v2.6.31-etercifs-testing3 -> v2.6.31-etercifs-testing3

testing - это исходный набор исправлений, в
который вошли исправления для 2.6.31 ->
http://bugs.etersoft.ru/show_bug.cgi?id=4536

testing2 - это упомянутй патч, который пока не
вошёл ни в какую сборку etercifs

testing3 - это исправление для открытия файлов,
при использовании forcemand (портировано пока
только для ядер 2.6.30 и 2.6.31)



2piastry: Проверь ветку etersoft-forcemandatory-open (все
ветки с патчами ведутся для последнего
релиза - сейчас сравнивать можно по тегу
v2.6.31) и добавь testing3 для всех других веток, а
именно:
legacy-centos52-etercifs-testing3
legacy-centos53-etercifs-testing3
legacy-etercifs-testing3
v2.6.16-etercifs-testing3
v2.6.23-etercifs-testing3
v2.6.24-etercifs-testing3
v2.6.25-etercifs-testing3
v2.6.26-etercifs-testing3
v2.6.27-etercifs-testing3
v2.6.28-etercifs-testing3
v2.6.29-etercifs-testing3

Ветки testing3 (которые включают и testing2) можно
вливать в etercifs и собирать тестовый etercifs-4.4.1.
То, что сейчас лежит в etercifs-4.4.1 я уже не
помню...
Comment 7 Vitaly Lipatov 2009-12-18 21:12:37 MSK
(In reply to comment #6)
> Ветки testing3 (которые включают и testing2) можно
> вливать в etercifs и собирать тестовый etercifs-4.4.1.
Каким образом это делается? Хотелось бы понять процедуру сборки и повторить по инструкции.
Comment 8 Евгений Синельников 2009-12-18 22:45:56 MSK
(In reply to comment #7)
> (In reply to comment #6)
> > Ветки testing3 (которые включают и testing2) можно
> > вливать в etercifs и собирать тестовый etercifs-4.4.1.
> Каким образом это делается? Хотелось бы
> понять процедуру сборки и повторить по
> инструкции.
> 

Вопрос ведь в выпуске etercifs. Значит речь можно вести в контексте этого проекта. В нём собраны:
- исходники модулей под разные ядра;
- скрипты сборки.

Какие нужны инструкции чтобы обновить исходники? Ну, желательно каждый модуль менять отдельным коммитом.

Список необходимых действий понятен из истории etercifs в git. Нужно попатчить каждую из версий модуля для разных ядер и поднять релиз.
Comment 9 Pavel Shilovsky 2009-12-29 21:54:50 MSK
Прокинул все необходимые ветки в ветку 4.4.1:

http://git.etersoft.ru/people/piastry/packages/?p=etercifs.git;a=shortlog;h=refs/heads/4.4.1

Можно собирать etercifs!
Comment 10 Денис Баранов 2010-01-06 15:52:13 MSK
В данной баге решалась проблема запуска приложений (exec).
На сборке etercifs 4.4.1 eter1 и она решена патчем.

Вторая проблема решается в http://bugs.etersoft.ru/show_bug.cgi?id=4292

Эту закрываем.
Comment 11 Денис Баранов 2010-01-06 16:25:14 MSK
Тестировалась проблема запуска на etercifs 4.4.1 eter1
Воспроизвести не удалось, монтировал с параметром direct.