kpartx: dm_remove_partmaps: support non-dm devices
authorMartin Wilck <mwilck@suse.com>
Mon, 15 May 2017 15:37:15 +0000 (17:37 +0200)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 17 May 2017 21:30:32 +0000 (23:30 +0200)
commit373d83392236e4ded45fa85214008eab2444c842
treeb20bab01b9ea37a0337050d2be83a50c640f051e
parent14e6488faa4004e8a05ad17ff69cb37d50f95c5d
kpartx: dm_remove_partmaps: support non-dm devices

Commit  3d709241 improved partition removal, but broke support
for handling partitions of non-dm devices such as loop devices
or RAM disks.

This requires passing the dev_t of the device down to
do_foreach_partmap(). Doing so, there's little use in trying
to derive major/minor numbers from the "mapname" any more
(which actually is the device name for non-DM devices).
But we can use this to find out whether the device in question
is a dm device.

The test for UUID match doesn't work for non-DM devices (this
shall be improved in a later patch in this series).

The test for equal name of parent dev and partition is only valid
for dm devices. For non-dm devices such as loop, "/dev/mapper/loop0"
could, theoretically, be a partition of "/dev/loop0"
(and we don't want to rely on map names).

Fixes: 3d709241 "kpartx: sanitize delete partitions"
Signed-off-by: Martin Wilck <mwilck@suse.com>
kpartx/devmapper.c
kpartx/devmapper.h
kpartx/kpartx.c