LINUX.ORG.RU
решено ФорумAdmin

Как удостовериться в том, что диск уже доступен для монтирования?

 , ,


0

0

У меня встроенная система с busybox и mdev. Я хочу автоматически монтировать подключенные флеш-накопители в моей системе, и у меня есть скрипт для этого (он вызывается из mdev, когда я подключаю диски). Он хорошо работает с одним диском, но иногда, когда я подключаю слишком много дисков, некоторые из них не монтируются с ошибкой Failed to write lock '/dev/sdb1': Resource temporarily unavailable

Ответ на: комментарий от anonymous

лорчую, ибо что еще может сообщить о возможности монтирования как не mount? а если диск предположим сетевой, даже если адрес пингуется, но пока не попытаешься смонтировать - не узнаешь

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от anonymous

Рассматривал такой вариант. Ввести счётчик, попытаться смонтировать 5 раз и если не смонтируется, то тогда уже сообщить об ошибке - это вариант, но я предполагаю, что есть какое-то более красивое решение, о котором я просто не знаю.

HeroFromEarth
() автор топика
Ответ на: комментарий от HeroFromEarth

а что является критерием появления нового девайса, который нужно смонтировать? парсинг dmesg? udev?

anonymous
()
Ответ на: комментарий от anonymous

mdev. В /etc/mdev.conf имеется строка вида:

sd[a-z] root:root 660 */bin/flash-automount.sh

При подключении/отключении устройств /dev/sd[a-z] вызывается этот скрипт.

HeroFromEarth
() автор топика

некоторые из них не монтируются

есть какая-то закономерность? например, это всегда одни и те же физические устройства, или один тип файловой системы, или имя устройства в системе /dev/sdN

монтируется ли устройство руками сразу после ошибки? монтируется ли оно автоматически, когда подключается отдельно?

когда я подключаю слишком много дисков

не понял, подключаешь сразу за короткое время (4-5 дисков за 1-2 секунды), или постепенно (условно раз в час) подключенные диски накапливаются и перестают монтироваться новые?

anonymous
()
Ответ на: комментарий от anonymous

есть какая-то закономерность?

Очень сложно её выявить, потому что проблема встречается редко. Грубо говоря, раз из 10.

не понял, подключаешь сразу за короткое время

Подключаю 4 флешки через USB-хаб, а потому в системе они появляются единовременно или около того.

HeroFromEarth
() автор топика
Ответ на: комментарий от HeroFromEarth

Я видел такую закономерность, заключающуюся в том, что /dev/sdX появился и работоспособен, а /dev/sdX1 только-только появился и ещё не работоспособен. В скрипте можно просто сделать сравнение текущей даты и времени /dev/sdX1, выждать пару секунд, а потом уже монтировать.

vodz ★★★★★
()
Ответ на: комментарий от HeroFromEarth

Подключаю 4 флешки через USB-хаб, а потому в системе они появляются единовременно или около того.

т.е. сначала вставляешь флешки в отключенный от компа хаб, а потом хаб подключаешь к компу?

короче, в системе есть еще какая-то активность на каждое новое устройство, которая на короткое время успевает эксклюзивно залочить девайс, и твой скрипт натыкается на эту блокировку; такое может случиться и для одиночной флешки, просто вероятность меньше

можно, конечно, долго и упорно пытаться искать кто это делает, но даже если найдешь, что потом будешь делать с этим знанием? надеешься, что между этой подсистемой и mdev существует нужная тебе синхронизация, которую достаточно будет активировать? это крайне маловероятно

просто монтируй в цикле и не парься!

PS: капча в тему: «stop unisex» :)

anonymous
()
Ответ на: комментарий от vodz

/dev/sdX появился и работоспособен, а /dev/sdX1 только-только появился и ещё не работоспособен

кстати, да!
может быть эвент приходит для /dev/sdc, а скрипт пытается работать с /dev/sdc1, который еще не готов
2ТС: показывай скрипт

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.