[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