Re: [PATCH] 2.6.10 - direct-io async short read bug

From: Andrew Morton
Date: Tue Mar 08 2005 - 04:22:23 EST


Suparna Bhattacharya <suparna@xxxxxxxxxx> wrote:
>
> ...
>
> Bugs in this area seem never-ending don't they - plug one, open up
> another - hard to be confident/verify :( - someday we'll have to
> rewrite a part of this code.

It's solving a complex problem. Any rewrite would probably end up just as
hairy once all the new bugs and corner cases are fixed. Maybe.


> Hmm, shouldn't dio->result ideally have been adjusted to be within
> i_size at the time of io submission, so we don't have to deal with
> this during completion ? We are creating bios with the right size
> after all.
>
> We have this:
> if (!buffer_mapped(map_bh)) {
> ....
> if (dio->block_in_file >=
> i_size_read(dio->inode)>>blkbits) {
> /* We hit eof */
> page_cache_release(page);
> goto out;
> }
>
> and
> dio->result += iov[seg].iov_len -
> ((dio->final_block_in_request - dio->block_in_file) <<
> blkbits);
>
>
> can you spot what is going wrong here that we have to try and
> workaround this later ?

Good question. Do we have the i_sem coverage to prevent a concurrent
truncate?

But from Sebastien's description it doesn't soound as if a concurrent
truncate is involved.

-
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/