Re: attempt to access beyond end of device

From: John Kennedy (jk@csuchico.edu)
Date: Thu Dec 07 2000 - 12:10:45 EST


On Thu, Dec 07, 2000 at 05:34:28PM +0100, Andries Brouwer wrote:
> On Thu, Dec 07, 2000 at 04:56:59PM +0100, Jan Niehusmann wrote:
> > That means that if blk_size[major][MINOR(bh->b_rdev)] == 0, the request
> > is canceled but no message is printed. Shouldn't there be a warning message?
>
> Maybe that code fragment is mine. If so, then at some point
> in time I decided that the answer to your question is no.

  As a potential real-world case (but possibly unrelated), I had an
interesting situation crop-up while I was playing with the loopback
filesystems.

  If you just use the program-tools, you end up with a situation like:

        losetup <blah> [close all] dd <blah> [close all] losetup -d [blah]

  In my case, I was making a standalone program that did it all in one
program and I messed up in the ordering of the close() and the LOOP_CLR_FD.

  I'm pretty sure that (with my small 10K test dataset) the I/O between
the loopback device and the looped file was never hitting the disk.
If I LOOP_CLR_FD before I closed, I ended up with bad data in the looped
file and kernel errors syslogged:

        kernel: attempt to access beyond end of device
        kernel: 07:00: rw=1, want=1, limit=0
        kernel: dev 07:00 blksize=0 blocknr=0 sector=0 size=1024 count=1

  I tended to get 10 of those, one for each of the 10 1K blocks in
my test dataset.

  Doing the close() then the LOOP_CLR_FD got rid of the errors.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Dec 07 2000 - 21:00:18 EST