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

[libvirt] Regression in createQemuImg()@storage_backend_fs.c of 0.6.4


I've found a regression in using a backing store of a volume (qcow2)
in a pool (dir). The following code of 0.6.4 hits my system that works
with 0.6.3.

static int createQemuImg(virConnectPtr conn,
                         virStorageVolDefPtr vol,
                         virStorageVolDefPtr inputvol) {


    const char *inputBackingPath = (inputvol ? inputvol->backingStore.path
                                             : NULL);


        /* XXX: Not strictly required: qemu-img has an option a different
         * backing store, not really sure what use it serves though, and it
         * may cause issues with lvm. Untested essentially.
        if (!inputBackingPath ||
            !STREQ(inputBackingPath, vol->backingStore.path)) {
            virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
                                  "%s", _("a different backing store can not "
                                          "be specified."));
            return -1;

The inputBackingPath will be always NULL when it is called via
virStorageBackendFileSystemVolBuild(). (The third argument is
passed to that of createQemuImg as it is.)

static int
virStorageBackendFileSystemVolBuild(virConnectPtr conn,
                                    virStorageVolDefPtr vol) {
    return _virStorageBackendFileSystemVolBuild(conn, vol, NULL);

I've addressed the regression with the patch

-        if (!inputBackingPath ||
+        if (inputBackingPath &&

However, I'm not sure whether this fix satisfies the aim of
the original code. Any idea?

Thanks in advance,

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