On Sat, Aug 15, 2015 at 6:35 PM, Loic Dachary <[email protected]> wrote:
> Hi Sage,
>
> On 15/08/2015 16:28, Sage Weil wrote:
>> On Sat, 15 Aug 2015, Loic Dachary wrote:
>>> Hi,
>>>
>>> Is there a portable and consistent way to figure out if a given /dev/XXX
>>> path (for instance /dev/dm-1) is a partition of a whole device ?
>>> Although checking /sys/block/dm-1/dm/name for a number at the end (like
>>> mpatha1 or mpatha2) would probably work, it feels like a fragile hack.
>>> Looking into /sys/block/dm-1/slaves will lead to
>>> /sys/block/dm-1/slaves/dm-0 and we can check that
>>> /sys/block/dm-*/subsystem is class/block. But that does not necessarily
>>> mean dm-1 is a partition of dm-0, just that it's a slave of dm-0.
>>
>> Take a look at is_partition in ceph-disk, whih is the best I came up with.
>> Basically it checks if the device name appears as /sys/block/*/$foo...
For regular devices, you can access() /sys/dev/block/maj:min/partition.
If it's there, it's a partition - no need to iterate over /sys/block.
>
> That is consistently updated for /dev/sdb or /dev/vdb but things are
> different when using multipath. I'll rely on /sys/block/dm-?/dm/name instead
> until a better solution is found.
A better way might be to rely on the fact that a dm partition will
necessarily have its uuid prefixed by "part". In that case, it should
be safe to assume that the thing in slaves is a whole disk - I think
that's what various util-linux tools do. However, IIRC the dm uuid is
optional, so that won't work on a dm device without a uuid.
Thanks,
Ilya
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html