Re: Block layer question - indicating EOF on block devices

From: Jens Axboe
Date: Thu Dec 02 2004 - 03:20:28 EST


On Wed, Dec 01 2004, Alan Cox wrote:
> On Mer, 2004-12-01 at 02:43, Andrew Morton wrote:
> > Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:
> > If the driver simply returns an I/O error, userspace should see a short
> > read and be happy?
>
> And the logs fill with I/O error messages.

read-ahead should definitely be marked quiet, agree.

> > > and
> > > it also fills the log with "I/O error on" spew from the block layer
> > > innards even if REQ_QUIET is magically set.
> >
> > We'd need to propagate that quietness back up to the buffer_head layer, at
> > least.
>
> Thats what I was assuming looking at the code. Really the block layer is
> broken here. It should not be whining about I/O errors on readahead
> blocks just letting them go. It has no idea if the readahead is a
> badblock a media feature or whatever. (or as James added on irc scsi
> reservations).

The upper buffer layer could do something intelligent if EOF is set on
the bio, it really should. The problem is that there's no -EXXX to flag
EOF from the driver, it would be nicest if one could just do:

end_that_request_chunk(req, 1, good_bytes);
end_that_request_chunk(req, -EOF, residual);

and be done with it.

--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/