Il 25/10/2012 15:41, ronnie sahlberg ha scritto: > On Thu, Oct 25, 2012 at 1:02 AM, Kevin Wolf <kw...@redhat.com> 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.
The problem is that bdrv_create is overloaded to mean both "create the backing storage" and "format the image". Only the latter applies to iSCSI and, in general, as far as protocols are concerned bdrv_create is usually a no-op. However, Kevin said he prefers to have an explicit override of bdrv_create for iSCSI. Can you implement that? (I'll then do the same for NBD). Paolo > > 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. > > regards > ronnie sahlberg >