Моя ОС - Slackware 13.1(2.6.33.4-smp).

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

Есть ли способ принудительного удаления какого-либо устройства петли? Есть ли у вас какие-либо идеи?

1 ответ1

0

Возможно, что доступ к устройству является асинхронным, поэтому данные вашего устройства монтирования /dd / что бы вы ни делали в петле все еще находятся в кеше и скоро будут сброшены. В этом случае sync должна помочь (но может замедлить работу всей системы, если выполняются другие операции с интенсивным вводом-выводом).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .