qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] qemu-img convert with block driver without .bdrv_create


From: Kevin Wolf
Subject: Re: [Qemu-devel] qemu-img convert with block driver without .bdrv_create (like iscsi)
Date: Thu, 25 Oct 2012 15:54:55 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120605 Thunderbird/13.0

Am 25.10.2012 15:41, schrieb ronnie sahlberg:
> On Thu, Oct 25, 2012 at 1:02 AM, Kevin Wolf <address@hidden> 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]