From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37866) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TRNtq-0000nu-Ie for qemu-devel@nongnu.org; Thu, 25 Oct 2012 09:55:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TRNtl-0001W3-DJ for qemu-devel@nongnu.org; Thu, 25 Oct 2012 09:55:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:2258) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TRNtl-0001Uw-4l for qemu-devel@nongnu.org; Thu, 25 Oct 2012 09:55:01 -0400 Message-ID: <508944AF.7060700@redhat.com> Date: Thu, 25 Oct 2012 15:54:55 +0200 From: Kevin Wolf MIME-Version: 1.0 References: <93cf825d-ecca-4367-8b74-4a69c53b5801@mailpro> <5088EE6A.6050102@redhat.com> <5088EFAF.9000004@redhat.com> <5088F212.5050101@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] qemu-img convert with block driver without .bdrv_create (like iscsi) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: ronnie sahlberg Cc: Paolo Bonzini , qemu-devel , Alexandre DERUMIER Am 25.10.2012 15:41, schrieb ronnie sahlberg: > On Thu, Oct 25, 2012 at 1:02 AM, Kevin Wolf wrote: >> Am 25.10.2012 09:52, schrieb Paolo Bonzini: >>> Il 25/10/2012 09:46, Kevin Wolf ha scritto: >>>>>> 1)add a .bdrv_create in block/iscsi.c ? >>>>>> >>>>>> (like host_device block driver, only open/close the device and check if size if big enough) >>>> Yes, this is the right way. >>> >>> Could it be a default implementation of .bdrv_create (i.e. something >>> you'd do in bdrv_create if the protocol doesn't have it)? >> >> No, there are block drivers that really can't create images. They should >> keep failing. > > Technically, you can not create new LUNs via the iscsi protocol > itself, you can only access pre-existing luns > that have been created by some out-of-band method. > > So basically, with iscsi you can only ever access already preexisting luns. > > In that case I think requiring a .bdrv_create feels wrong. We are not > creating a new LUN here but just opening an already existing LUN. This is the very same as with host_device, which has always worked like this. Obviously it can't create new block devices, but it can check that the preexisting block device is suitable for the requested size and options. > What about changing bdrv_create() so that IF there is no .bdrv_create > method, then assume it might be a pre-existing file in which case we > fallback to use .bdrv_open instead. I don't think this is the correct behaviour for all block drivers. It's wrong for any driver that would actually require a specific content of the image file. For example let's overwrite an existing image: $ touch /tmp/test.dmg # Or this could be a real DMG image as well $ ./qemu-img create -f dmg /tmp/test.dmg 64M Formatting '/tmp/test.dmg', fmt=dmg size=67108864 qemu-img: Formatting or formatting option not supported for file format 'dmg' After your change it would appear to have succeeded, whereas of course it still wouldn't have created the image. Kevin