Re: [PATCH] rbd: set the 'device' link in sysfs

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

 



On 1/23/20 7:45 PM, Ilya Dryomov wrote:
> On Thu, Jan 23, 2020 at 1:44 PM Hannes Reinecke <hare@xxxxxxx> wrote:
>>
>> The rbd driver already provides additional information in sysfs
>> under /sys/bus/rbd, so we should set the 'device' link in the block
>> device to reference this information.
>>
>> Cc: David Disseldorp <ddiss@xxxxxxxx>
>> Signed-off-by: Hannes Reinecke <hare@xxxxxxxx>
>> ---
>>  drivers/block/rbd.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
>> index 9f1f8689e316..3240b7744aeb 100644
>> --- a/drivers/block/rbd.c
>> +++ b/drivers/block/rbd.c
>> @@ -6938,7 +6938,7 @@ static ssize_t do_rbd_add(struct bus_type *bus,
>>         if (rc)
>>                 goto err_out_image_lock;
>>
>> -       add_disk(rbd_dev->disk);
>> +       device_add_disk(&rbd_dev->dev, rbd_dev->disk, NULL);
>>         /* see rbd_init_disk() */
>>         blk_put_queue(rbd_dev->disk->queue);
> 
> Hi Hannes,
> 
> I looked at this a while ago and didn't go through with the patch
> because I wasn't sure whether this symlink can point to something
> arbitrary.  IIRC it usually points a couple of levels up, to some
> parent.  In the rbd case, this would be a completely different tree:
> /sys/devices/virtual -> /sys/bus/rbd.
> 
Yes, this is expected.
The 'device' link will _always_ point into a different tree; the
accessor via /sys/block or /sys/bus are assumed to be virtual entries,
with the 'device' link pointing to the underlying device.
In our case the underlying device is also a virtual entity, but that's okay.

> Do you know if there is precedent for this in some other driver?
> Are you sure it's not going to break any assumptions?
> 
Things like iscsi do the very same thing.
And no, it doesn't break assumptions; quite the contrary.

> How did this came up?  I'm curious because rbd(8) is only utility
> that I know of that (somewhat) cares.
> 
That's me digging through the rbd driver and see if I could hook up
nvme-over-fabrics as a frontend to ceph/rbd.
As such I needed to find some information about the rbd device, and
found that while the driver provides additional information under
/sys/devices/rbd/X, this information is not linked to /sys/block/rbdX.
And this patch just links these to bits of information together, so that
now you can get the driver specific informations by following the
'device' link like all the other drivers do, too.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      Teamlead Storage & Networking
hare@xxxxxxx			                  +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Felix Imendörffer



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux