Am 21.11.2013 um 09:51 hat Stefan Hajnoczi geschrieben: > On Thu, Nov 21, 2013 at 11:33:56AM +0800, Chunyan Liu wrote: > > 2013/11/20 Stefan Hajnoczi <stefa...@gmail.com> > > > > > On Wed, Nov 20, 2013 at 04:50:29PM +0800, Chunyan Liu wrote: > > > > block/cow.c | 22 ++++++++++++++++++++++ > > > > block/qcow.c | 22 ++++++++++++++++++++++ > > > > block/qcow2.c | 22 ++++++++++++++++++++++ > > > > > > I think you can avoid modifying all the image formats: > > > > > > .bdrv_create() functions pass options to bdrv_create_file(). Therefore > > > an image format like qcow2 does not need to parse the nocow option > > > itself. Only raw-posix.c:.bdrv_create() needs to know about the nocow > > > option. > > > > > > > > In existing code, options passed to bdrv_create_file contains no option in > > fact. > > > > And if we pass all options to bdrv_create_file directly, raw-posix.c: > > .bdrv_create() will get NOCOW option but at the same time get SIZE option, > > it > > will create a file with total size. For cow/qcow/qcow2, I suppose it's not > > expected? In current code, bdrv_create_file will create a zero-sized image > > for > > cow/qcow/qcow2. > > I see what the problem is: the loop that parses options does options++. > So by the time it has processed them the options pointer will be NULL or > point to a terminator option (option->name == NULL). > > I was confused because there has been a patch series which changes > .bdrv_create() option parsing. But I forgot it hasn't been merged. > https://lists.gnu.org/archive/html/qemu-devel/2013-08/msg01695.html > > Kevin: Have you looked at .bdrv_create() QEMUOptionParameter removal > recently? Otherwise I'm inclined to merge Chunyan's patch - we can > always refactor the code later when QEMUOptionParameter is removed.
No, I haven't. I think the QemuOpts conversion series was relatively close, but it seems nobody is working on it any more. Someone should probably pick it up and finish it. Kevin