linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] virtio_blk: decrement index when blockdevice is removed
       [not found] <1099995365.641718.1301903899721.JavaMail.root@zmail07.collab.prod.int.phx2.redhat.com>
@ 2011-04-05  4:49 ` Takuma Umeya
  2011-04-05  5:08   ` Jens Axboe
  2011-04-06 19:17   ` Ryan Harper
  0 siblings, 2 replies; 5+ messages in thread
From: Takuma Umeya @ 2011-04-05  4:49 UTC (permalink / raw)
  To: virtualization
  Cc: Rusty Russell, Jens Axboe, Christoph Hellwig, john cooper,
	Tejun Heo, linux-kernel

When virtio block device is removed, index does not get decremented. When 
another virtio disk is attached it uses the next device letter to the 
one that is suppose to be available. 

Signed-off-by: Takuma Umeya <tumeya@redhat.com>

diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 6ecf89c..730e7af 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -489,6 +489,7 @@ static void __devexit virtblk_remove(struct virtio_device *vdev)
        mempool_destroy(vblk->pool);
        vdev->config->del_vqs(vdev);
        kfree(vblk);
+       index--;
 }
 
 static const struct virtio_device_id id_table[] = {

-- 
Umeya, Takuma
Technical Account Manager
Red Hat GSS APAC
+81.3.5798.8584 (direct)
tumeya@redhat.com

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] virtio_blk: decrement index when blockdevice is removed
  2011-04-05  4:49 ` [PATCH] virtio_blk: decrement index when blockdevice is removed Takuma Umeya
@ 2011-04-05  5:08   ` Jens Axboe
  2011-04-06  1:32     ` Rusty Russell
  2011-04-06 19:17   ` Ryan Harper
  1 sibling, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2011-04-05  5:08 UTC (permalink / raw)
  To: Takuma Umeya
  Cc: virtualization, Rusty Russell, Christoph Hellwig, john cooper,
	Tejun Heo, linux-kernel

On 2011-04-05 06:49, Takuma Umeya wrote:
> When virtio block device is removed, index does not get decremented. When 
> another virtio disk is attached it uses the next device letter to the 
> one that is suppose to be available. 
> 
> Signed-off-by: Takuma Umeya <tumeya@redhat.com>
> 
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index 6ecf89c..730e7af 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -489,6 +489,7 @@ static void __devexit virtblk_remove(struct virtio_device *vdev)
>         mempool_destroy(vblk->pool);
>         vdev->config->del_vqs(vdev);
>         kfree(vblk);
> +       index--;
>  }
>  
>  static const struct virtio_device_id id_table[] = {

What happens when you delete a device that isn't the last one?

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] virtio_blk: decrement index when blockdevice is removed
  2011-04-05  5:08   ` Jens Axboe
@ 2011-04-06  1:32     ` Rusty Russell
  2011-04-06  3:05       ` Jens Axboe
  0 siblings, 1 reply; 5+ messages in thread
From: Rusty Russell @ 2011-04-06  1:32 UTC (permalink / raw)
  To: Jens Axboe, Takuma Umeya
  Cc: virtualization, Christoph Hellwig, john cooper, Tejun Heo, linux-kernel

On Tue, 05 Apr 2011 07:08:12 +0200, Jens Axboe <jaxboe@fusionio.com> wrote:
> On 2011-04-05 06:49, Takuma Umeya wrote:
> > When virtio block device is removed, index does not get decremented. When 
> > another virtio disk is attached it uses the next device letter to the 
> > one that is suppose to be available. 
> > 
> > Signed-off-by: Takuma Umeya <tumeya@redhat.com>
> > 
> > diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> > index 6ecf89c..730e7af 100644
> > --- a/drivers/block/virtio_blk.c
> > +++ b/drivers/block/virtio_blk.c
> > @@ -489,6 +489,7 @@ static void __devexit virtblk_remove(struct virtio_device *vdev)
> >         mempool_destroy(vblk->pool);
> >         vdev->config->del_vqs(vdev);
> >         kfree(vblk);
> > +       index--;
> >  }
> >  
> >  static const struct virtio_device_id id_table[] = {
> 
> What happens when you delete a device that isn't the last one?

Obviously we should do something cleverer for assigning drives.

It might be a cute if genhd gave us a function to get the next free
index for a given major number, and format it for us, like so:

      /* Return the next available minor for a given @major, at least
       * @spacing after the previous and, and append appropriate letters
       * to @name if it's not NULL.  -ve errno on fail (-ENOSPC?). */
      int disk_next_minor(int major, unsigned spacing, char *name);

A trivial optimization would be to remember the last major and max minor
(resetting that if any disks are removed).

This could clean up other code, too.

Cheers,
Rusty.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] virtio_blk: decrement index when blockdevice is removed
  2011-04-06  1:32     ` Rusty Russell
@ 2011-04-06  3:05       ` Jens Axboe
  0 siblings, 0 replies; 5+ messages in thread
From: Jens Axboe @ 2011-04-06  3:05 UTC (permalink / raw)
  To: Rusty Russell
  Cc: Takuma Umeya, virtualization, Christoph Hellwig, john cooper,
	Tejun Heo, linux-kernel

On 2011-04-06 03:32, Rusty Russell wrote:
> On Tue, 05 Apr 2011 07:08:12 +0200, Jens Axboe <jaxboe@fusionio.com> wrote:
>> On 2011-04-05 06:49, Takuma Umeya wrote:
>>> When virtio block device is removed, index does not get decremented. When 
>>> another virtio disk is attached it uses the next device letter to the 
>>> one that is suppose to be available. 
>>>
>>> Signed-off-by: Takuma Umeya <tumeya@redhat.com>
>>>
>>> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
>>> index 6ecf89c..730e7af 100644
>>> --- a/drivers/block/virtio_blk.c
>>> +++ b/drivers/block/virtio_blk.c
>>> @@ -489,6 +489,7 @@ static void __devexit virtblk_remove(struct virtio_device *vdev)
>>>         mempool_destroy(vblk->pool);
>>>         vdev->config->del_vqs(vdev);
>>>         kfree(vblk);
>>> +       index--;
>>>  }
>>>  
>>>  static const struct virtio_device_id id_table[] = {
>>
>> What happens when you delete a device that isn't the last one?
> 
> Obviously we should do something cleverer for assigning drives.
> 
> It might be a cute if genhd gave us a function to get the next free
> index for a given major number, and format it for us, like so:
> 
>       /* Return the next available minor for a given @major, at least
>        * @spacing after the previous and, and append appropriate letters
>        * to @name if it's not NULL.  -ve errno on fail (-ENOSPC?). */
>       int disk_next_minor(int major, unsigned spacing, char *name);
> 
> A trivial optimization would be to remember the last major and max minor
> (resetting that if any disks are removed).
> 
> This could clean up other code, too.

Something like idr would be a good fit for this. But yes, adding some
helpers for this might not hurt...

-- 
Jens Axboe

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] virtio_blk: decrement index when blockdevice is removed
  2011-04-05  4:49 ` [PATCH] virtio_blk: decrement index when blockdevice is removed Takuma Umeya
  2011-04-05  5:08   ` Jens Axboe
@ 2011-04-06 19:17   ` Ryan Harper
  1 sibling, 0 replies; 5+ messages in thread
From: Ryan Harper @ 2011-04-06 19:17 UTC (permalink / raw)
  To: Takuma Umeya
  Cc: virtualization, john cooper, Jens Axboe, linux-kernel, Tejun Heo,
	Christoph Hellwig

* Takuma Umeya <tumeya@redhat.com> [2011-04-05 00:00]:
> When virtio block device is removed, index does not get decremented. When 
> another virtio disk is attached it uses the next device letter to the 
> one that is suppose to be available. 
> 
> Signed-off-by: Takuma Umeya <tumeya@redhat.com>
> 
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index 6ecf89c..730e7af 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -489,6 +489,7 @@ static void __devexit virtblk_remove(struct virtio_device *vdev)
>         mempool_destroy(vblk->pool);
>         vdev->config->del_vqs(vdev);
>         kfree(vblk);
> +       index--;
>  }

What about referencing /dev/disk/by-id  and using drive serial numbers?
How much do we care about re-using minor numbers?  IIRC, virtio-blk can
go out to vdxxx; that's a lot of disks or add/removes.

> 
>  static const struct virtio_device_id id_table[] = {
> 
> -- 
> Umeya, Takuma
> Technical Account Manager
> Red Hat GSS APAC
> +81.3.5798.8584 (direct)
> tumeya@redhat.com
> _______________________________________________
> Virtualization mailing list
> Virtualization@lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/virtualization

-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
ryanh@us.ibm.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-04-06 19:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1099995365.641718.1301903899721.JavaMail.root@zmail07.collab.prod.int.phx2.redhat.com>
2011-04-05  4:49 ` [PATCH] virtio_blk: decrement index when blockdevice is removed Takuma Umeya
2011-04-05  5:08   ` Jens Axboe
2011-04-06  1:32     ` Rusty Russell
2011-04-06  3:05       ` Jens Axboe
2011-04-06 19:17   ` Ryan Harper

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).