On Tue, 2011-09-06 at 13:24 +0200, Josef Spillner wrote: > Package: linux-2.6 > Version: 2.6.32-35 > Severity: normal > > I've partitioned a USB stick with parted into two partitions. The > first one is set to be slightly larger > than an image files which is copied over onto with dd, followed by a > bootloader installation into the MBR. > Now, this setup works fine for image files up to around 4 GB. > Recently, the file has grown to 4329570304 > bytes which is slightly larger than this boundary. Suddenly, the dd > invocation locks up at around the > boundary and the kernel spits out some sort of "device blocked for too > long" panic. > The call trace can be found in the log below. > Since the system is all amd64, this looks like a strange issue to me.
I don't know what the architecture has to do with anything. Linux on
any architecture can work with very large files and devices.
It's conceivable that there is a bug in the USB drive's firmware that
affects writes crossing the 4 GB boundary.
The warning actually doesn't refer to the blocked write, but to a task
that is trying to open the device. That is presumably blocked by the
first task, but it shouldn't be. This might indicate a locking bug.
> Also, it affects not just one USB
> stick but even a newly bought one (costly bug reporting...). Just
> copying the image to another file on
> an ext4 partition also works without any issues.
> Here's the command line used for the copy to the device:
>
> sudo dd if=foo.img of=/dev/sdb1 bs=1048576
[...]
Here is how you could test whether the 4 GB boundary is a problem for
the device:
dd if=/dev/zero of=/dev/sdb seek=8388607 bs=512 count=2
Note, this will of course erase part of /dev/sdb1. You could also test
reading across the boundary:
dd if=/dev/sdb of=/dev/null skip=8388607 bs=512 count=2
Ben.
signature.asc
Description: This is a digitally signed message part

