Я працюю на вбудованому пристрої Linux із жорстким диском USB. На цьому диску є файл swap. Жорсткий диск може бути вимкнений в будь-який момент, перш ніж повернути його на живлення через кілька секунд. Це призводить до різних повідомлень про помилки, таких як:
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-пристрій знову буде живитись. Оскільки це той самий диск, можливо, я можу відновити всі очікувані запити без повторного монтажу диска.
Яка ваша думка? Можна щось подібне зробити? Або неможливо чисто відновити ОС після видалення жорсткого диска?