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.
Attachment:
signature.asc
Description: This is a digitally signed message part