Re: /sys/block and /dev and partitions

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

 



Hi Ilya,

On 15/08/2015 19:42, Ilya Dryomov wrote:
> On Sat, Aug 15, 2015 at 6:35 PM, Loic Dachary <loic@xxxxxxxxxxx> 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.

I added http://tracker.ceph.com/issues/12706 for when someone has time to rework that part of the code.

> 
>>
>> 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.

It looks like multipath on both CentOS 7 and Ubuntu 14.04 set the uuid in this way.

Is it also safe to assume that if the uuid is:

$ cat /sys/dev/block/253:?/dm/uuid
mpath-353333330000007d0
part1-mpath-353333330000007d0
part2-mpath-353333330000007d0

it means these were created by multipath because of the mpath ? When asking dmsetup with:

$ sudo dmsetup info --columns --noheading --options subsystem
mpath
part2
part1

it looks like it assumes the first part of the uuid is always the subsystem. Which makes me wonder how reliable this is. What I'm really looking for is a way to assert that a give dm-* is owned by multipath.

Thanks a lot !

> 
> Thanks,
> 
>                 Ilya
> 

-- 
Loïc Dachary, Artisan Logiciel Libre

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux