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