Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 7816 - Поддержка SMB2 протокола в CIFS модуле   Make a simular bug
Summary: Поддержка SMB2 протокола в CIFS модуле
Status: CLOSED FIXED
Alias: None
Product: CIFS@Etersoft
Classification: Продукты (Products)
Component: прочее (show other bugs)
Version: не указана
Hardware: PC All
: P3 normal
Target Milestone: ---
Deadline: 2012-09-30
Assignee: Pavel Shilovsky
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 7815
  Show dependency treegraph
 
In work:
Reported: 2011-10-25 14:10 MSK by Pavel Shilovsky
Modified: 2012-10-28 20:59 MSK (History)
2 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Shilovsky 2011-10-25 14:10:54 MSK
Основной функционал по работе с SMB2 протоколом принят в апстрим (http://bugs.etersoft.ru/show_bug.cgi?id=6517#c62). Далее надо реализовать необходимые оставшиеся части:
1) установку блокировок
2) установка атрибутов файла
3) монтирование с prefixpath опцией.
Comment 1 Pavel Shilovsky 2011-10-29 00:07:14 MSK
Выяснилось, что SMB2 патчи требуют анализа большего количества человек и уже слишком поздно для включения их в ядро 3.2.

Провёл rebase с последними изменениями от Стива Френча и отправил в рассылку под версией 2.
Comment 2 Pavel Shilovsky 2011-12-15 15:51:55 MSK
Сделал rebase c v3.2-rc5.

Проанализировал полученные замечания. Провёл начальную реорганизацию коммитов. Убрал лишний код. Проверил собираемость.

Ветка:

http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/smb2-dev2
Comment 3 Pavel Shilovsky 2011-12-23 00:25:51 MSK
Занимался рефакторингом патчей согласно подходу обсуждённому в рассылке: вводить новые структуры не разом, а в процессе их использования. Для этого пришлось перерабатывать первые патчи, что вызвало множество конфликтов слияния, которые были исправлены. Провёл rebase с v3.2-rc6. Протестировал чтение/запись.

Ветка:
http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/smb2-dev5
Comment 4 Pavel Shilovsky 2011-12-24 11:34:42 MSK
Работал над задачей: продолжил процесс переноса кода из ранних патчей в те, где он реально используется, тестировал код.
Comment 5 Pavel Shilovsky 2011-12-24 11:35:10 MSK
Перенёс код в ветку:
http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/smb2-dev
Comment 6 Pavel Shilovsky 2011-12-26 23:55:21 MSK
Работал над задачей разбивки патчей. Последний код тут: http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/smb2-dev2
Comment 7 Pavel Shilovsky 2011-12-27 17:30:39 MSK
Продолжил работу над патчами:
1) Разбил патч монтирования.
2) Переписал патч переустановки соединения.
3) Переупорядочил.

Послений код тут:
http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/smb2-dev
Comment 8 Pavel Shilovsky 2011-12-29 23:59:48 MSK
Работал над задачей:
1) раскидал файл smb2misc.c в существующие файлы.
2) поправил патчи, сделал их более логически связанными.

Осталось раскидать патч "CIFS: Add structure definitions for SMB2 PDUs".
Comment 9 Pavel Shilovsky 2012-01-10 23:50:33 MSK
Занимался патчем "CIFS: Add structure definitions for SMB2 PDUs" - выкинул лишнее, разбил на составляющие и объединил части с остальными патчами.
Comment 10 Pavel Shilovsky 2012-01-12 19:10:53 MSK
Работал над задачей:
1) Переписал smb2readdir.c на основе текущего кода readdir для cifs.
2) Переименовал функции *UCS* в *UTF16*, что правильнее отражает кодировку, используемую протоколом.
3) Правки стиля.
Comment 11 Pavel Shilovsky 2012-01-13 00:32:20 MSK
Правил патчи. Разобрался с проблемой неосвобождения кэша после чтения директории.
http://git.etersoft.ru/people/piastry/packages/?p=cifs-2.6.git;a=shortlog;h=refs/heads/smb2-dev
Comment 12 Pavel Shilovsky 2012-01-16 13:28:27 MSK
Разбирался с проблемой ошибки чтения/записи в случае соединения с подписью. Исправил ошибки, поправил код. Протестировал данный функионал.
Comment 13 Pavel Shilovsky 2012-01-16 16:56:13 MSK
Продолжил работу над задачей.
1) Правил стиль патчей.
2) Тестировал чтение/запись на LAN и WI-FI вариантах с подписью и без.
Comment 14 Pavel Shilovsky 2012-01-17 23:35:06 MSK
Работал над задачей.

1) Локализовал проблему некорректности прочитанных данных при кратковременном (10-20 сек) разрыве сети.
2) Переписал код переустановки соединения, согласно существующему коду для CIFS протокола.
3) Поправил стиль патчей для прохождения checkpatch.pl проверок.

Подготовил и отправил первый патч, который меняет имена функций *UCS* в *UTF16*.
Comment 15 Pavel Shilovsky 2012-01-17 23:37:28 MSK
Тестировал полученный функционал SMB2 модуля.
Comment 16 Pavel Shilovsky 2012-01-19 15:14:38 MSK
Провёл более детальное тестирование, внес некоторые правки. Патч из http://bugs.etersoft.ru/show_bug.cgi?id=7816#c14 приняли в апстрим.
Comment 17 Pavel Shilovsky 2012-01-20 12:40:16 MSK
Просмотрел патчи перед отправкой (50 штук), поправил некоторые стилевые ошибки. Отправил в рассылку на ревью.
Comment 18 Pavel Shilovsky 2012-02-06 23:55:41 MSK
Получил комментарии по патчам. Занимался следующими задачами:
1) Прокинул коммиты конфига/опции монтирования вначало серии.
2) Перешёл на подобие credit-based flow control для CIFS.
3) Продумал и переписал функции транспортного уровня, сделав их общими для CIFS и SMB2.
4) Прочие исправления.
Comment 20 Pavel Shilovsky 2012-02-07 19:19:58 MSK
Продолжил работу над патчами: привёл в порядок код приёма сообщений + сделал некоторые правки в транспортном уровне. Разбил патчи на три группы:
1) CIFS-only патчи, подготавливающие код для добавления поддержки SMB2.
2) SMB2 код отправки/приёма сообщений, рабочая команда монтирования.
3) Прочие команды.
В дальнейшем, можно будет поделить патчи последней группы на более мелкие.
Comment 21 Pavel Shilovsky 2012-02-08 23:56:24 MSK
Работал с первой группой патчей. Добавил патч для cifs_readv_receive, поправил существующие. Тестировал на стабильность.
Comment 22 Pavel Shilovsky 2012-02-09 19:21:23 MSK
Провёл тестирование как патчей первой группы, так и всех сразу. Отправил в рассылку патчи первой группы.
Comment 23 Pavel Shilovsky 2012-02-09 22:35:41 MSK
Разбирался с проблемой появление WARNING в dmesg ошибку в коде mkdir/rmdir в случае, когда POSIX расширения выключены. В случае POSIX при каждой новой поддиректории в родительской директории увеличивается nlink. В случае выключенных расширений на сервере этого не делается, а на клиенте делалось. В результате, при обновлении параметров айнода nlink сбрасывался, а потом при rmdir уменьшался в сторону отрицательных значений. Исправил ошибку, изменяя nlink только в случае POSIX. Отправил в рассылку.
Comment 24 Pavel Shilovsky 2012-02-17 20:23:07 MSK
Добавил возможность для CIFS обрабатывать MaxMpxCount значение для negotiate (означающее, сколько клиент может послать запросов одновременно).
Comment 25 Pavel Shilovsky 2012-02-21 21:08:00 MSK
Работал над патчами, связанными с MaxMpxCount (ветка cifs-patches): переосмыслил семантику, реализовал, провёл тестирование. Далее планирую провести более подробное тестирование.
Comment 26 Pavel Shilovsky 2012-02-22 12:59:49 MSK
Протестировал и отправил в рассылку (11 патчей).
Comment 27 Pavel Shilovsky 2012-02-27 22:24:38 MSK
Провёл rebase относительно апстрим для cifs-patches и для smb2-dev относительно cifs-patches (исправил работу с кредитами и прочий код транспортного уровня).

Занимался поиском баги, из-за которой для SMB2 после umount модуль оставался занятым и не выгружался. Локализовал и исправил: ошибка была в коде чтения сожержимого директории (воспроизводится с помощью Connectathon Test Suite basic test #6) и заключалась в постоянном увеличении счётчика ссылок на соединение к шаре при инициализации чтения директории. После исправления, тест проходит.

Далее планирую провести более тщательно тестирования полученного функионала. Также планируется добиться прохождения такого же количества тестов basic, general и special, как и CIFS.
Comment 28 Pavel Shilovsky 2012-02-28 14:52:52 MSK
Провёл дополнительное тестирование. Исправил багу, поправил код.
Comment 29 Pavel Shilovsky 2012-02-28 21:40:57 MSK
Добавил поддержку файловых блокировок для SMB2. Далее планирую провести более тщательное тестирование полученного функционала.
Comment 30 Pavel Shilovsky 2012-03-02 19:59:27 MSK
Тестировал SMB2 блокировки с помощью Connectathon Test Suite - исправил некоторые неточности и добился работы всех тестов, кроме #10 (на CIFS так же - из-за ограничению семантики блокировок). Так же возникли проблемы с тестом #14 - отдельно он работает, а после теста #13 (mmap) нет, из-за незакрытия файлового дескриптора -> неудаления файла (падает на open).
Comment 31 Pavel Shilovsky 2012-03-03 13:39:57 MSK
Проверил собираемость, просмотрел и отправил в рассылку патчи из ветки cifs-patches.
Comment 32 Pavel Shilovsky 2012-03-15 16:30:38 MSK
На основе дискуссии в рассылке начал переработку патчей.
Comment 33 Pavel Shilovsky 2012-03-16 19:55:45 MSK
(В ответ на comment #32)
> На основе дискуссии в рассылке начал переработку патчей.

Подготовил и отправил патчи в рассылку.
Comment 34 Pavel Shilovsky 2012-03-17 13:01:27 MSK
Начал работу над реорганизацией кода inode операций для последующего переиспользования кода в SMB2. Переработал mkdir.
Comment 35 Pavel Shilovsky 2012-03-20 16:11:02 MSK
Работал с текущими патчами - подготавливал для принятия в апстрим. Так же обсудил свои соображения по выделения протоколо-зависимых частей кода в структуры с набором протоколо-специфичных операций.
Comment 36 Pavel Shilovsky 2012-03-26 13:22:54 MSK
Подготовил и отправил первую партию патчей SMB2 (Get SMB2 mount work).
Comment 37 Pavel Shilovsky 2012-03-27 22:06:17 MSK
Провёл rebase SMB2 патчей на текущий master (в который добавились асинхронная запись в режиме strictcache, новый разбор строки опций монтирования и более мелкие изменения). Провёл рефакторинг кода операций чтения/записи. Протестировал код.

Исправил ошибку потери опции forcemand в новом коде разбора строки опций монтирования.
Comment 38 Pavel Shilovsky 2012-04-05 18:08:36 MSK
Провёл rebase на текущий master. Обновил ветки.
Comment 39 Pavel Shilovsky 2012-05-11 20:59:03 MSK
(В ответ на comment #38)
> Провёл rebase на текущий master. Обновил ветки.

Провёл rebase на текущую ветку for-next для CIFS. Провёл обширное тестирование, выявил и исправил ошибки.
Comment 40 Pavel Shilovsky 2012-05-16 14:00:46 MSK
Перевёл lock патчи на новый подход: когда мы имеем отдельную структуру для протоколо-специфичных операцию (котора устанавливается в момент установки соединения), что делает основной код протоколо-независымым.
Comment 41 Pavel Shilovsky 2012-05-17 19:57:42 MSK
(В ответ на comment #40)
> Перевёл lock патчи на новый подход: когда мы имеем отдельную структуру для
> протоколо-специфичных операцию (котора устанавливается в момент установки
> соединения), что делает основной код протоколо-независымым.

lock патчи в for-next в апстрим.

Продолжил работать над переводом кода CIFS на новую архитектуру: работал над патчами транспортного уровня + провел rebase SMB2 патчей на получившийся код.
Comment 42 Pavel Shilovsky 2012-08-31 23:52:17 MSK
Работал над проблемой пропуска lease break сообщений полученных сразу после открытия файла на сервере - клиент не успевает инициализировать файловую структуру и код поиска соответствующего дескриптора для обработки сообщения ничего не находит.

Решил следующим образом: завёл список текущих открытий, в котором хранится информация об открытии пока не успее инициализироваться структура файла. Код обработки break сообщения проверяет сначала список файловых струтур, а потом список текущих открытий. В случае нахождения в последнем обновляется информация о lease и потом при инициализации эта информацию заполняется в файловую структуру.

Завёл ветку для работы над leases:
http://git.altlinux.org/people/piastry/public/?p=cifs-2.6.git;a=shortlog;h=refs/heads/smb2-leases
Comment 43 Pavel Shilovsky 2012-09-04 20:41:59 MSK
Подготовил патчи, протестировал и отправил.
Comment 44 Pavel Shilovsky 2012-09-13 10:14:56 MSK
Работал над патчами.
Comment 45 Pavel Shilovsky 2012-09-14 22:17:06 MSK
Работал над патчами.
Comment 46 Pavel Shilovsky 2012-09-15 22:55:19 MSK
Работал над патчами.
Comment 47 Pavel Shilovsky 2012-09-19 12:40:49 MSK
Разбирался с ошибками конвертации litte/big endian.
Comment 48 Pavel Shilovsky 2012-09-19 16:07:06 MSK
Разбирался с проблемой утечки памяти в SMB2 коде.
Comment 49 Pavel Shilovsky 2012-09-25 11:18:57 MSK
Работал над патчами: исправил возможное user-after-free в процессе установки соединения, изменил код ops->close - теперь возвращает void, отправил патчи в рассылку.
Comment 50 Pavel Shilovsky 2012-10-28 20:59:47 MSK
Поскольку все патчи приняты в v3.7-rc1, бага следует считать закрытой.