[dm-devel] Error target causes entire device to error

Milan Broz mbroz at redhat.com
Thu Nov 13 18:38:50 UTC 2008


Phillip Susi wrote:
> $ sudo dmsetup create foo
> 0 1 zero
> 1 1 error
> $ sudo dd if=/dev/mapper/foo bs=512 count=1
> dd: reading `/dev/mapper/foo': Input/output error
> 0+0 records in
> 0+0 records out
> 0 bytes (0 B) copied, 0.000715356 seconds, 0.0 kB/s
> 
> Why can't you read the first sector mapped to the zero target without 
> getting an error?  It doesn't seem to matter where the error target is 
> in the table, or how big the virtual device is; any attempt to read 
> anywhere returns an error if there are any sectors mapped to the error 
> target.

try

dd iflag=direct if=/dev/mapper/foo bs=512 count=1
and
dd iflag=direct if=/dev/mapper/foo bs=512 count=1 skip=1

it seems that someone optimize the request, direct io does what you want.
in fact, dm receives bio requesting 1024 bytes, not 512.
(optimizing it to page size, but here it is limited by device size).

assuming that your arch has 4kb pages, try to setup device with
0 8 zero
8 8 error

and try again...

Milan
--
mbroz at redhat.com





More information about the dm-devel mailing list