On 06/19/2013 05:24 PM, Ján Tomko wrote: > Add -o compat= and -o lazy_refcounts options for qemu-img. > --- > src/storage/storage_backend.c | 62 ++++++++++++++++++++++--- > tests/storagevolxml2argvdata/qcow2-1.1.argv | 1 + > tests/storagevolxml2argvdata/qcow2-lazy.argv | 1 + > tests/storagevolxml2argvdata/vol-qcow2-1.1.xml | 32 +++++++++++++ > tests/storagevolxml2argvdata/vol-qcow2-lazy.xml | 35 ++++++++++++++ > tests/storagevolxml2argvtest.c | 2 + > 6 files changed, 126 insertions(+), 7 deletions(-) > create mode 100644 tests/storagevolxml2argvdata/qcow2-1.1.argv > create mode 100644 tests/storagevolxml2argvdata/qcow2-lazy.argv > create mode 100644 tests/storagevolxml2argvdata/vol-qcow2-1.1.xml > create mode 100644 tests/storagevolxml2argvdata/vol-qcow2-lazy.xml > > diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c > index deea850..b2c9608 100644 > --- a/src/storage/storage_backend.c > +++ b/src/storage/storage_backend.c > @@ -633,9 +633,15 @@ static int > virStorageBackendCreateQemuImgOpts(char **opts, > const char *backingType, > bool encryption, > - bool preallocate) > + bool preallocate, > + int format, > + const char *compat, > + virBitmapPtr features) > { > virBuffer buf = VIR_BUFFER_INITIALIZER; > + bool b; > + int i; > + > if (backingType) > virBufferAsprintf(&buf, "backing_fmt=%s,", backingType); > if (encryption) > @@ -643,16 +649,45 @@ virStorageBackendCreateQemuImgOpts(char **opts, > if (preallocate) > virBufferAddLit(&buf, "preallocation=metadata,"); > > + if (compat) > + virBufferAsprintf(&buf, "compat=%s,", compat); > + if (features && format == VIR_STORAGE_FILE_QCOW2) { > + for (i = 0; i < VIR_STORAGE_FILE_FEATURE_LAST; i++) { > + ignore_value(virBitmapGetBit(features, i, &b)); > + if (b) { > + switch (i) { Either have that 'i' as virStorageFeature (or whatever the name of the enum is) or cast it here so there is a check for all possible values without default). > + case VIR_STORAGE_FILE_FEATURE_LAZY_REFCOUNTS: > + if (STREQ(compat, "0.10")) { /STREQ/STREQ_NULLABLE/ [...] > diff --git a/tests/storagevolxml2argvtest.c b/tests/storagevolxml2argvtest.c > index 92ab2f2..25ff5a7 100644 > --- a/tests/storagevolxml2argvtest.c > +++ b/tests/storagevolxml2argvtest.c > @@ -188,6 +188,8 @@ mymain(void) > "qcow2-nobacking-none", 0, FMT_NONE); > DO_TEST(false, "pool-dir", "vol-qcow2-nobacking", "vol-file", > "qcow2-nobacking-convert-none", 0, FMT_NONE); > + DO_TEST(false, "pool-dir", "vol-qcow2-lazy", NULL, "qcow2-lazy", 0, FMT_OPTIONS); > + DO_TEST(false, "pool-dir", "vol-qcow2-1.1", NULL, "qcow2-1.1", 0, FMT_OPTIONS); > Wrap those lines and add a test with compat=0.10,lazy_refcounts=on. ACK with nits fixed. Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list