* Re: [PATCH] virtio_blk: Dont waste major numbers
[not found] ` <200801311553.53653.borntraeger__25311.9055800655$1201791369$gmane$org-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
@ 2008-01-31 21:50 ` Anthony Liguori
[not found] ` <47A242B1.40709-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2008-03-20 17:38 ` [PATCH] virtio_blk: Dont waste major numbers H. Peter Anvin
0 siblings, 2 replies; 5+ messages in thread
From: Anthony Liguori @ 2008-01-31 21:50 UTC (permalink / raw)
To: Christian Borntraeger
Cc: kvm-devel,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA
Christian Borntraeger wrote:
> Rusty,
>
> currently virtio_blk uses one major number per device. While this works
> quite well on most systems it is wasteful and will exhaust major numbers
> on larger installations.
>
> This patch allocates a major number on init and will use 16 minor numbers
> for each disk. That will allow ~64k virtio_blk disks.
>
There's are some other limitations to the number of virtio block
devices. For instances...
> sprintf(vblk->disk->disk_name, "vd%c", virtblk_index++);
This gets bogus after 64 disks. We also have a hard limit for
virtio-pci based on the number of PCI slots available. One thing I was
considering was whether we should try to support multiple disks per
virtio device.
Otherwise, this patch looks good to me.
Regards,
Anthony Liguori
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] virtio_blk: Dont waste major numbers
[not found] ` <47A242B1.40709-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
@ 2008-02-01 7:33 ` Christian Borntraeger
[not found] ` <200802010833.51809.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Christian Borntraeger @ 2008-02-01 7:33 UTC (permalink / raw)
To: Anthony Liguori
Cc: kvm-devel,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA
Am Donnerstag, 31. Januar 2008 schrieb Anthony Liguori:
> There's are some other limitations to the number of virtio block
> devices. For instances...
>
> > sprintf(vblk->disk->disk_name, "vd%c", virtblk_index++);
>
> This gets bogus after 64 disks.
Right. I will fix that with an additional patch.
> We also have a hard limit for
> virtio-pci based on the number of PCI slots available. One thing I was
> considering was whether we should try to support multiple disks per
> virtio device.
What is the hard limit in the PCI name space?
Christian
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Patch] virtio_blk: implement naming for vda-vdz, vdaa-vdzz, vdaaa-vdzzz
[not found] ` <200802010833.51809.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
@ 2008-02-01 8:05 ` Christian Borntraeger
[not found] ` <200802010905.00336.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 5+ messages in thread
From: Christian Borntraeger @ 2008-02-01 8:05 UTC (permalink / raw)
To: Anthony Liguori, Rusty Russell
Cc: kvm-devel,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA
Am Freitag, 1. Februar 2008 schrieb Christian Borntraeger:
> Right. I will fix that with an additional patch.
This patch goes on top of the minor number patch. Please let me know if
you want a merged patch:
Currently virtio_blk creates the disk name combinging "vd" with 'a'++.
This will give strange names after vdz. I have implemented names up to
vdzzz - inspired by the sd.c code. That should be sufficient for now.
There is one driver in the kernel (driver/s390/block/dasd_genhd.c) that
implements names from dasda-dasdzzzz allowing even more disks. Maybe
a janitor can come up with a common implementation usable for all kind
of block device drivers.
I have tested this patch with 100 disks - seems to work.
Signed-off-by: Christian Borntraeger <borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
---
drivers/block/virtio_blk.c | 29 ++++++++++++++++++++++-------
1 file changed, 22 insertions(+), 7 deletions(-)
Index: kvm/drivers/block/virtio_blk.c
===================================================================
--- kvm.orig/drivers/block/virtio_blk.c
+++ kvm/drivers/block/virtio_blk.c
@@ -11,8 +11,7 @@
MODULE_LICENSE("GPL");
-static unsigned char virtblk_index = 'a';
-static int major, minor;
+static int major, index;
struct virtio_blk
{
@@ -173,6 +172,11 @@ static struct block_device_operations vi
.getgeo = virtblk_getgeo,
};
+static int index_to_minor(int index)
+{
+ return index << PART_BITS;
+}
+
static int virtblk_probe(struct virtio_device *vdev)
{
struct virtio_blk *vblk;
@@ -180,7 +184,7 @@ static int virtblk_probe(struct virtio_d
u64 cap;
u32 v;
- if (minor >= 1 << MINORBITS)
+ if (index_to_minor(index) >= 1 << MINORBITS)
return -ENOSPC;
vdev->priv = vblk = kmalloc(sizeof(*vblk), GFP_KERNEL);
@@ -219,13 +223,24 @@ static int virtblk_probe(struct virtio_d
goto out_put_disk;
}
- sprintf(vblk->disk->disk_name, "vd%c", virtblk_index++);
+ if (index < 26) {
+ sprintf(vblk->disk->disk_name, "vd%c", 'a' + index % 26);
+ } else if (index < (26 + 1) * 26) {
+ sprintf(vblk->disk->disk_name, "vd%c%c",
+ 'a' + index / 26 - 1, 'a' + index % 26);
+ } else {
+ const unsigned int m1 = (index / 26 - 1) / 26 - 1;
+ const unsigned int m2 = (index / 26 - 1) % 26;
+ const unsigned int m3 = index % 26;
+ sprintf(vblk->disk->disk_name, "vd%c%c%c",
+ 'a' + m1, 'a' + m2, 'a' + m3);
+ }
+
vblk->disk->major = major;
- vblk->disk->first_minor = minor;
+ vblk->disk->first_minor = index_to_minor(index);
vblk->disk->private_data = vblk;
vblk->disk->fops = &virtblk_fops;
-
- minor += 1 << PART_BITS;
+ index++;
/* If barriers are supported, tell block layer that queue is ordered */
if (vdev->config->feature(vdev, VIRTIO_BLK_F_BARRIER))
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Patch] virtio_blk: implement naming for vda-vdz, vdaa-vdzz, vdaaa-vdzzz
[not found] ` <200802010905.00336.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
@ 2008-02-04 12:36 ` Rusty Russell
0 siblings, 0 replies; 5+ messages in thread
From: Rusty Russell @ 2008-02-04 12:36 UTC (permalink / raw)
To: Christian Borntraeger
Cc: kvm-devel,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA
On Friday 01 February 2008 19:05:00 Christian Borntraeger wrote:
> Am Freitag, 1. Februar 2008 schrieb Christian Borntraeger:
> > Right. I will fix that with an additional patch.
>
> This patch goes on top of the minor number patch. Please let me know if
> you want a merged patch:
>
> Currently virtio_blk creates the disk name combinging "vd" with 'a'++.
> This will give strange names after vdz. I have implemented names up to
> vdzzz - inspired by the sd.c code. That should be sufficient for now.
Thanks, both applied.
Cheers,
Rusty.
PS. Am on vacation now, for 4 weeks. Will check mail only occasionally.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] virtio_blk: Dont waste major numbers
2008-01-31 21:50 ` [PATCH] virtio_blk: Dont waste major numbers Anthony Liguori
[not found] ` <47A242B1.40709-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
@ 2008-03-20 17:38 ` H. Peter Anvin
1 sibling, 0 replies; 5+ messages in thread
From: H. Peter Anvin @ 2008-03-20 17:38 UTC (permalink / raw)
To: Anthony Liguori; +Cc: kvm-devel, Christian Borntraeger, virtualization
Anthony Liguori wrote:
> Christian Borntraeger wrote:
>> Rusty,
>>
>> currently virtio_blk uses one major number per device. While this works
>> quite well on most systems it is wasteful and will exhaust major numbers
>> on larger installations.
>>
>> This patch allocates a major number on init and will use 16 minor numbers
>> for each disk. That will allow ~64k virtio_blk disks.
>>
>
> There's are some other limitations to the number of virtio block
> devices. For instances...
>
>> sprintf(vblk->disk->disk_name, "vd%c", virtblk_index++);
>
> This gets bogus after 64 disks. We also have a hard limit for
> virtio-pci based on the number of PCI slots available. One thing I was
> considering was whether we should try to support multiple disks per
> virtio device.
>
I would much rather prefer a /dev/vd/dXpY naming scheme, similar to
cciss and other large disk installations.
Unfortunately yet another side effect of people not habitually
registering major numbers is that the namespace is not as well maintained.
-hpa
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-03-20 17:38 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <200801311553.53653.borntraeger__25311.9055800655$1201791369$gmane$org@de.ibm.com>
[not found] ` <200801311553.53653.borntraeger__25311.9055800655$1201791369$gmane$org-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2008-01-31 21:50 ` [PATCH] virtio_blk: Dont waste major numbers Anthony Liguori
[not found] ` <47A242B1.40709-rdkfGonbjUSkNkDKm+mE6A@public.gmane.org>
2008-02-01 7:33 ` Christian Borntraeger
[not found] ` <200802010833.51809.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2008-02-01 8:05 ` [Patch] virtio_blk: implement naming for vda-vdz, vdaa-vdzz, vdaaa-vdzzz Christian Borntraeger
[not found] ` <200802010905.00336.borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
2008-02-04 12:36 ` Rusty Russell
2008-03-20 17:38 ` [PATCH] virtio_blk: Dont waste major numbers H. Peter Anvin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox