Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Контроль числа чтений сектора


Автор: Krio 8.6.2009, 15:16
Кто контролирует число попыток чтенй битого сектора диска? драйвер файловой системы, драйвер диска или кто другой?? 
Прияина: Нужно при чтении диска, если возникла ошибка, сразу пропустить этот сектор, а не ждать пока произойдут можество попыток чтения (до победного)
А если известно кто? То какой параметр или IOCTL нужно послать, чтобы принудительно отказаться "до победного" чтения этого сектора.
P.S: уж очень надоело по 10 минут сидеть и ждать пока этот сектор пройдёться (

Автор: fry 16.6.2009, 16:16
Цитата

Кто контролирует число попыток чтенй битого сектора диска?


В общем и целом ОС.

Цитата

...ка? драйвер файловой системы,...

Сильно сомневаюсь, хотя вполне возможно. Проверить можно сменив ФС. Просто данные ошибки можно отловить на более низком уровне, т.е. на уровне драйвера жесткого диска.

Цитата

Нужно при чтении диска, если возникла ошибка, сразу пропустить этот сектор, а не ждать пока произойдут можество попыток чтения (до победного)

Это происходит не очень долго (доли секунды). А если таких секторов (имхо правильнее блоков) до хрена, то надо думать о спасении данных с HDD и его замене (в случае с CD сделать копию и пользоваться ей). Т.е. иными словами это не забота приложений пользовательского уровня.

Битые блоки "лечатся" через Victoria. В кратце: у ЖД есть резерв блоков. Если происходит обращение по записи к битому (с большим временем записи) блоку, то контроллер ЖД "дает команду" на его замену (ремеппинг). Все ОС такой операции (запись в битый блок) не производят, т.е нужна сторонняя прога (см. выше). Она делает многократную запись в битый блок и активирует ремеппинг.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)