Summary: | При запуске etercifs иногда не выгружается ванильный cifs | ||
---|---|---|---|
Product: | CIFS@Etersoft | Reporter: | Александр Морозов <amorozov> |
Component: | прочее | Assignee: | Pavel Shilovsky <piastry> |
Status: | CLOSED FIXED | QA Contact: | Денис Баранов <baraka> |
Severity: | minor | ||
Priority: | P3 | CC: | lav, piastry, sin |
Version: | не указана | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Debian GNU/Linux | ||
Whiteboard: | |||
Заявки RT: | 13212 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 3043, 4284 |
Description
Александр Морозов
2010-03-12 14:27:50 MSK
Проблема в том, что на старых ядрах ванильного cifs вообще нельзя делать rmmod сразу после umount, так как там не успевает очиститься информация, связанная с шарой и при попытке удалить модуль возникает ошибка ядра. В etercifs у нас сделаны хаки для того, чтобы после отмонтирования шары на старых ядрах, вся информация была уже удалена. Начиная с 29 ядра, в ядре пофиксили эту багу следующим образом: каждая новая сессия увеличивает ссылку на модуль на один - то есть модуль будет занят, пока вся информация не выгрузится и количество ссылок не станет равным нулю. Потому можно всегда использовать rmmod --wait (он будет ждать, пока модуль не освободиться) - это будет хорошо работать на ядрах, начиная с 29, и с нашим etercifs, и с ванильным cifs. Для более старых версий можно сделать что-то вроде sleep() на какое-нибудь небольшое время - обычно там это занимает не более чем секунду (потому вопроизводится только, если сделать umount и rmmod сразу быстро друг за другом - и то не всегда). (In reply to comment #1) ... > Потому можно всегда использовать rmmod --wait > (он будет ждать, пока модуль не > освободиться) - это будет хорошо работать Давайте использовать. Но не будет ли это зависать навсегда, если шара смонтирована и занята? > на ядрах, начиная с 29, и с нашим etercifs, и с > ванильным cifs. Для более старых версий можно > сделать что-то вроде sleep() на какое-нибудь > небольшое время - обычно там это занимает > не более чем секунду (потому > вопроизводится только, если сделать umount и > rmmod сразу быстро друг за другом - и то не > всегда). Давайте сделаем задержку на пару секунд для старых ядер. В принципе, можно на полгода-год вставить жёсткий sleep, а потом и ядер таких не будет ;) Выпустил 4.5.0-alt2. Доступен с ftp. Делается rmmod --wait после umount_cifs (которая отмонтирует все ресурсы), если она завершена успешно, иначе выводится сообщение об ошибке. Для старых ядер делается sleep на 2 секунды. Fixed. Принято. |