From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongsu Park Subject: Re: [RFC PATCH]vhost-blk: In-kernel accelerator for virtio block device Date: Fri, 12 Aug 2011 08:46:48 +0200 Message-ID: <4E44CC58.7090309@profitbricks.com> References: <1311863346-4338-1-git-send-email-namei.unix@gmail.com> <4E325F98.5090308@gmail.com> <4E32F7F2.4080607@us.ibm.com> <4E363DB9.70801@gmail.com> <1312495132.9603.4.camel@badari-desktop> <4E3BCE4D.7090809@gmail.com> <4E3C302A.3040500@us.ibm.com> <4E3F3D4E.70104@gmail.com> <4E3F6E72.1000907@us.ibm.com> <4E3F90E3.9080600@gmail.com> <4E4019E1.2090508@us.ibm.com> <4E41EAC5.8060001@gmail.com> <1313008667.9603.14.camel@badari-desktop> <4E4345F1.90107@gmail.com> <4E434A51.8000902@gmail.com> <4E44B100.3000208@us.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Liu Yuan , kvm@vger.kernel.org To: Badari Pulavarty Return-path: Received: from mail-fx0-f46.google.com ([209.85.161.46]:42504 "EHLO mail-fx0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751189Ab1HLGqw (ORCPT ); Fri, 12 Aug 2011 02:46:52 -0400 Received: by fxh19 with SMTP id 19so2131486fxh.19 for ; Thu, 11 Aug 2011 23:46:51 -0700 (PDT) In-Reply-To: <4E44B100.3000208@us.ibm.com> Sender: kvm-owner@vger.kernel.org List-ID: Hi Badari, On 12/08/11 06:50, Badari Pulavarty wrote: > On 8/10/2011 8:19 PM, Liu Yuan wrote: >>>> When opening second device, we get panic since used_info_cachep is >>>> already created. Just to make progress I moved this call to >>>> vhost_blk_init(). >>>> >>>> I don't see any host panics now. With single block device (dd), >>>> it seems to work fine. But when I start testing multiple block >>>> devices I quickly run into hangs in the guest. I see following >>>> messages in the guest from virtio_ring.c: >>>> >>>> virtio_blk virtio2: requests: id 0 is not a head ! >>>> virtio_blk virtio1: requests: id 0 is not a head ! >>>> virtio_blk virtio4: requests: id 1 is not a head ! >>>> virtio_blk virtio3: requests: id 39 is not a head ! >>>> >>>> Thanks, >>>> Badari >>>> >>>> >>> >>> vq->data[] is initialized by guest virtio-blk driver and vhost_blk is >>> unware of it. it looks like used ID passed >>> over by vhost_blk to guest virtio_blk is wrong, but, it should not >>> happen. :| >>> >>> And I can't reproduce this on my laptop. :( >>> > Finally, found the issue :) > > Culprit is: > > +static struct io_event events[MAX_EVENTS]; > > With multiple devices, multiple threads could be executing > handle_completion() (one for > each fd) at the same time. "events" array is global :( Need to make it > one per device/fd. > > For test, I changed MAX_EVENTS to 32 and moved "events" array to be > local (stack) > to handle_completion(). Tests are running fine. > > Your laptop must have single processor, hence you have only one thread > executing handle_completion() > at any time.. Can you please post your code, or send me via email? I'm also trying to get it running on a multi-processor system. Thanks in advance, > > Thanks, > Badari -- Dongsu Park Email: dongsu.park@profitbricks.com