[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Что почитать о монтировании сменных носителей?



On Mon, Oct 05, 2009 at 11:10:11PM +0400, Stanislav Maslovski wrote:
> On Mon, Oct 05, 2009 at 06:57:08PM +0400, Alexander Galanin wrote:
> > On Sun, 4 Oct 2009 16:28:39 +0400
> > Stanislav Maslovski <stanislav.maslovski@gmail.com> wrote:
> > 
> > > On Sun, Oct 04, 2009 at 02:03:22PM +0400, Alexander Galanin wrote:
> > > > Как результат такой перегруженности процесса монтирования, нормальных
> > > > средств для работы с демоном HAL нет. "Нормальный" понимается как
> > > > "простой", 'понятный" и "скриптуемый".
> > > 
> > > Не так страшен черт, как его малюют. Довольно давно уже (примерно с
> > > момента, когда иксы к hal привязали) для себя использую связку из
> > > autofs, hald и пары скриптов. До этого использовал связку udev +
> > > autofs.
> > > 
> > > Насколько просто, понятно и скриптуемо это решение -- можешь
> > > посмотреть сам. Прилагаю tar.gz.
> > 
> > Занятно. Только вот непонятно, зачем нужно ожидание исчезновения
> > симлинки из /media.
> 
> Это на случай race между cleanup скриптом и отработкой события add в
> другом скрипте, или между событиями удаления/добавления в одном
> скрипте (точнее, между двумя рейнкарнациями одного скрипта).
> Предложения как сделать лучше принимаются. Текущий вариант
> остался со времени "proof of concept".

В догонку:

Тут сначала надо бы разобраться необходимо ли вообще предохраняться
от race. В документации не очень внятно написано про порядок вызова
callouts для _разных_ устройств. Т.е., может ли быть так, что cleanup
скрипт еще не завершился (стартует по факту создания записи
/org/freedesktop/Hal/devices/computer), а hal-autofs(add) уже
выполняется (стартует по факту втыкания флешки).

Кстати, как я сейчас вижу, мое "решение" вовсе не избавляет от этого
race condition, если на момент запуска hal-autofs(add) в /media/
_отсутствует_ симлинк c именем `basename $UDI`. Нужен семафор.

Второй момент -- может ли по каким-то причинам реализоваться ситуация,
когда hal-autofs(remove) еще не завершился, а hal-autofs(add) уже
стартовал для того же девайса (выдернули и тут же воткнули флешку).
От этого мое "решение" предохраняет (даже если удаление не отработает
то и зацикливание на ожидании не страшно -- hald прибивает подвисшие
callouts, и симлинк уже есть).

__
Stanislav


Reply to: