LINUX.ORG.RU

Как получить событие о сбое ввода-вывода носителя?


0

0

Сабж. Есть ли какой стандартный интерфейс для этого?

Например, есть USB флеш накопитель, который со временем может выйти из строя (предел циклов записи). Процесс, работающий с таким носителем, на вызовах fwrite уходит в zombie или Uninterruptible sleep.

В сислог ядро выводит что-то типа:

Mar 16 09:11:26 hostname [   97.658780] sd 2:0:0:0: [sdb] Add. Sense: No additional sense information
Mar 16 09:11:26 hostname [   97.667873] sd 2:0:0:0: [sdb] Sense Key : No Sense [current]

Можно ли как-то поймать в юзерспейс приложении подобное событие? Или тупо мониторить сислог на предмет этого?

>или Uninterruptible sleep.

Правда сам не понимаю из-за чего такая ситуация возможна. Может глюки драйвера.

pathfinder ★★★★
()

Никак. Одна из многочисленных кривостей ядра.

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

Правда сам не понимаю из-за чего такая ситуация возможна. Может глюки драйвера.

Больше интересует, можно ли узнать о такой ситуации из приложения, которое даже не будет делать fwrite. Т.е. хотелось бы некое событие, в котором было бы что-то типа «/dev/sdb кирдык».

mr-badguy
() автор топика
Ответ на: комментарий от LamerOk

Ну вот ты и ответил на свой вопрос. ))

Неподходит. В общем случае не могу модифицировать код пишущего на носитель приложения. Нужно как-то узнать о случившемся из третьего(другого) приложения. Есть еще идеи?

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

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

x905 ★★★★★
()
Ответ на: комментарий от mr-badguy

> Неподходит.

Что не подходит? Вопрос был:

Можно ли как-то поймать в юзерспейс приложении подобное событие?


Ответ на него дан.

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

Хорошо, перефразирую: можно ли поймать такое событие, не вызывая непосредственно fwrite для того носителя?

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