Есть свой собственнй модуль для блочного устройств по ядро 2.4.27.
В нем есть функция block_request которая инициализируется как обработчик очереди.
После обработки запроса (чтения или записи), если все хорошо end_request(1)
Но если возникает ошибка обработки запроса, то вызываю функцию end_request( 0 )
При этом в основной программе я открываю данное блочное устройсво и начинаю писать в него данные (например линейно). Я вижу как перебираются сектора и данные. Если все хорошо write возращает количество записаннх данных - все Ок.
Но если все плохо, (я говорю end_request(0)), то на экране я вижу сообщение ядра о том что возникла ошибка ввода вывода по такомоту сектору, но приетом в главной программе write по прежнему не знает о ней - возвращает количество якобы успешно записанных байт и наступает следующий запрос на обработку блока.
Что надо сказать в блочном устройстве (в обрабочике очереди запросов), что бы write вернул ошибку записи в блочное устройство?
С уважением, Подколзин Игорь.