]> xenbits.xensource.com Git - libvirt.git/commit
storage: Fix algorithm generating path names for devmapper
authorJohn Ferlan <jferlan@redhat.com>
Mon, 9 May 2016 18:57:17 +0000 (14:57 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 11 May 2016 13:23:31 +0000 (09:23 -0400)
commite7bde8d319d86305ee542e554118139f06239094
tree9781502f7710259970acb78c48257a66b38260ba
parent5e54361c9d15f004a6b6795841c6689028b99e63
storage: Fix algorithm generating path names for devmapper

https://bugzilla.redhat.com/show_bug.cgi?id=1265694

Commit id '020135dc' didn't quite get the algorithm correct when a
device mapper source ended with a non numeric value (e.g. ends with
an alphabet value).

This patch modifies the 'part_separator' logic to add the "p" separator
to the attempted target path name only when specified as part_separator='yes'.

For a source name that already ends with a number, the logic doesn't change
as the part separator would need to be there.

For a source name that ends with something other than a number, this allows
the possibility that a "p" separator can be added. The default for one of
these source devices is to not add the separator.

The key for device mapper and the need for a partition separator "p" is
the presence of a number in the last character of the device name link
in /dev/mapper.  A name such as "/dev/mapper/mpatha1" would generate
a "/dev/mapper/mpatha1p1" partition, while "/dev/mapper/mpatha" would
generate partition "/dev/mapper/mpatha1". Similarly for a device
mapper entry not using friendly names or an alias, a device such as
"/dev/mapper/3600a0b80005b10ca00005ad656fd8d93" would generate a
paritition "/dev/mapper/3600a0b80005b10ca00005ad656fd8d93p1", while
a device such as "/dev/mapper/3600a0b80005b10ca00005e115729093f" would
generate a partition "/dev/mapper/3600a0b80005b10ca00005e115729093f1".
The long number is the WWID of the device. It's also possible to assign
an alias for a device mapper entry, that alias follows the same rules
with respect to ending with a number or not when adding a "p" to create
the target device path.
docs/formatstorage.html.in
src/storage/parthelper.c
src/storage/storage_backend_disk.c