[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[dm-devel] kpartx ignores read-only?



Hi,

on my system I have some read-only device mapper targets. They are 
old LVM instances which I made read-only using (lvchange -p r LV) 
in order to preserve their contents.

One of them contains a partitioned hard disk image.

# dmsetup info /dev/dm-29
> Name:              HDD-OLD--rost--image
> State:             ACTIVE (READ-ONLY)
> Read Ahead:        12288
> Tables present:    LIVE
> Open count:        1
> Event number:      0
> Major, minor:      253, 29
> Number of targets: 1
> UUID: LVM-PGTIP3IjFCE4UHM9fFGxuVhKR4FmCXO0gwvX8HW6JBs2dfxj6lYyKOmDLyxsDf0B

In order to mount a few partitions of it, I used kpartx to map the partitions.

# kpartx -a /dev/dm-29

This works fine, except the READ-ONLY does not seem to stick.

# dmsetup ls --tree
> [...]
> HDD-OLD--rost--imagep1 (253:30)
>  └─HDD-OLD--rost--image (253:29)
> [...]

# dmsetup info /dev/mapper/HDD-OLD--rost--imagep1
> Name:              HDD-OLD--rost--imagep1
> State:             ACTIVE
> Read Ahead:        256
> Tables present:    LIVE
> Open count:        0
> Event number:      0
> Major, minor:      253, 30
> Number of targets: 1
> UUID: part1-LVM-PGTIP3IjFCE4UHM9fFGxuVhKR4FmCXO0gwvX8HW6JBs2dfxj6lYyKOmDLyxsDf0B

And it's completely writable.

I tried to use losetup --partscan as an alternative to kpartx, which kind 
of works, except the kernel believes the loop device to be writable and 
gives a lot of I/O error messages and the filesystem behaves oddly.

> [ 3136.455451] Buffer I/O error on device loop0p1, logical block 1568
> [ 3136.455454] lost page write due to I/O error on loop0p1
> [ 3136.455466] loop: Write error at byte offset 36003840, length 4096.
> [ 3136.455469] Buffer I/O error on device loop0p1, logical block 8534
> [ 3136.455472] lost page write due to I/O error on loop0p1
> [ 3136.455478] loop: Write error at byte offset 5094449152, length 4096.
> [...]

This doesn't happen for other read-only devices (such as /dev/cdrom).

I can work around it using losetup --read-only, just wondering if this is 
expected behaviour at all or not? I never used read-only dm/LV before, 
but my expectation was that the read-only property in one place would 
also affect all devices that derive from it...

I'm using kernel 3.11.4 if it makes any difference.

Regards
Andreas Klauer


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]