losetup-d не всегда работает

Моя ОС является (2.6.33.4-smp) Slackware 13.1.

Я работаю losetup -d $dev в моем пользовательском сценарии как последняя строка, которая освободит некоторое циклическое устройство, созданное в нем. Однако это не всегда работает, говоря, что устройство занято, хотя ничто в моем сценарии больше не работает с ним. Этот сценарий вызывается много раз одно право за другим. Иногда устройство освобождено, иногда нет. Но если я поместил "сон 2" прежде losetup -d $dev затем без проблем никогда не происходит. Кажется, что "losetup" требуется некоторое время, или что-то... (не может показать Вам вывод losetup -a теперь, не в работают правильно теперь),

Существует ли способ вызвать удаление некоторого циклического устройства? У Вас есть какие-либо идеи?

0
задан 03.04.2014, 12:00

0 ответов

Возможно, что доступ к устройству является асинхронным, таким образом, данные Вашего mount/dd/whatever-you-did-to-the-loop-device все еще находятся в кэше и собираются быть сброшенными. В этом случае, sync должен помочь (но мог бы замедлить всю систему к проверке, если другие операции IO-heavy продолжаются).

В зависимости от Вашего варианта использования и среды, простой цикл с условием продолжения (while ! losetup -d $dev; do sleep 2; done) могло бы быть предпочтительным (хотя необходимо добавить условие выхода после нескольких попыток).

0
ответ дан 27.11.2019, 17:46

Теги

Похожие вопросы