Я работаю на встроенном устройстве Linux с жестким диском USB. На этом диске есть файл подкачки. Жесткий диск может быть выключен в любой момент, прежде чем снова включится через несколько секунд. Это приводит к различным сообщениям об ошибках, таким как:
Write-error on swap-device
Kernel panic - not syncing: Attempted to kill init!
или исключения в различных приложениях, что понятно, поскольку некоторые запросы ввода / вывода страницы не выполнялись. (Обратите внимание, что эта паника ядра также воспроизводима на обычном настольном Linux).
Моя цель - как-то предотвратить это и восстановить систему без перезагрузки ОС.
Я могу отложить сбой, вызвав scsi_block_requests
, но я не могу держать их заблокированными навсегда.
Я пытался убить некоторые задачи пользовательского режима (используя send_sig_info
) в ответ на уведомление USB_DEVICE_REMOVE
, но все равно продолжаю получать исключения.
Я также думаю о том, возможно ли предотвратить разрушение устройства SCSI при извлечении устройства USB, но оставьте его и затем каким-либо образом подключите его к новому устройству USB, которое будет создано через несколько секунд после повторного включения устройства USB. Поскольку это один и тот же диск, возможно, я смогу возобновить все ожидающие запросы без повторной установки диска.
Каково твое мнение? Можно ли что-то подобное сделать? Или невозможно просто восстановить ОС после удаления жесткого диска?