From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pekka Enberg Subject: Re: [PATCH 1/2] kvm tools: Bring VIRTIO_BLK_F_SEG_MAX feature back to virtio blk Date: Fri, 13 May 2011 15:46:43 +0300 Message-ID: <4DCD2833.7080803@cs.helsinki.fi> References: <1305254409-9079-1-git-send-email-asias.hejun@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Cyrill Gorcunov , Ingo Molnar , Sasha Levin , Prasad Joshi , kvm@vger.kernel.org To: Asias He Return-path: Received: from courier.cs.helsinki.fi ([128.214.9.1]:40012 "EHLO mail.cs.helsinki.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759119Ab1EMMqo (ORCPT ); Fri, 13 May 2011 08:46:44 -0400 In-Reply-To: <1305254409-9079-1-git-send-email-asias.hejun@gmail.com> Sender: kvm-owner@vger.kernel.org List-ID: On 5/13/11 5:40 AM, Asias He wrote: > commit b764422bb0b46b00b896f6d4538ac3d3dde9e56b > (kvm tools: Add support for multiple virtio-blk) > removed the VIRTIO_BLK_F_SEG_MAX publishment to guest. > > There is no reason we should not support it. Just bring it back. > > Signed-off-by: Asias He Sasha? > --- > tools/kvm/virtio/blk.c | 19 +++++++++++++++---- > 1 files changed, 15 insertions(+), 4 deletions(-) > > diff --git a/tools/kvm/virtio/blk.c b/tools/kvm/virtio/blk.c > index 5085f1b..8740bc4 100644 > --- a/tools/kvm/virtio/blk.c > +++ b/tools/kvm/virtio/blk.c > @@ -21,6 +21,10 @@ > #define NUM_VIRT_QUEUES 1 > > #define VIRTIO_BLK_QUEUE_SIZE 128 > +/* > + * the header and status consume too entries > + */ > +#define DISK_SEG_MAX (VIRTIO_BLK_QUEUE_SIZE - 2) > > struct blk_dev_job { > struct virt_queue *vq; > @@ -278,11 +282,12 @@ void virtio_blk__init(struct kvm *kvm, struct disk_image *disk) > blk_dev_base_addr = IOPORT_VIRTIO_BLK + new_dev_idx * IOPORT_VIRTIO_BLK_SIZE; > > *bdev = (struct blk_dev) { > - .mutex = PTHREAD_MUTEX_INITIALIZER, > - .disk = disk, > - .idx = new_dev_idx, > - .blk_config = (struct virtio_blk_config) { > + .mutex = PTHREAD_MUTEX_INITIALIZER, > + .disk = disk, > + .idx = new_dev_idx, > + .blk_config = (struct virtio_blk_config) { > .capacity = disk->size / SECTOR_SIZE, > + .seg_max = DISK_SEG_MAX, > }, > .pci_hdr = (struct pci_device_header) { > .vendor_id = PCI_VENDOR_ID_REDHAT_QUMRANET, > @@ -294,6 +299,12 @@ void virtio_blk__init(struct kvm *kvm, struct disk_image *disk) > .subsys_id = PCI_SUBSYSTEM_ID_VIRTIO_BLK, > .bar[0] = blk_dev_base_addr | PCI_BASE_ADDRESS_SPACE_IO, > }, > + /* > + * Note we don't set VIRTIO_BLK_F_GEOMETRY here so the > + * guest kernel will compute disk geometry by own, the > + * same applies to VIRTIO_BLK_F_BLK_SIZE > + */ > + .host_features = (1UL<< VIRTIO_BLK_F_SEG_MAX), > }; > > if (irq__register_device(PCI_DEVICE_ID_VIRTIO_BLK,&dev,&pin,&line)< 0)