cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Edison Su <Edison...@citrix.com>
Subject [ACS4.2] Don;t use libvirt 0.10.2+ if you are using NFS as primary storage on KVM
Date Sun, 25 Aug 2013 05:20:53 GMT
There is a "bug" in libvirt 0.10.2+:

 /* Short-circuit if already mounted */
385<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l385>
    if ((rc = virStorageBackendFileSystemIsMounted(pool)) != 0) {
386<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l386>
        if (rc == 1) {
387<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l387>
            virReportError(VIR_ERR_OPERATION_INVALID,
388<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l388>
                           _("Target '%s' is already mounted"),
389<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l389>
                           pool->def->target.path);
390<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l390>
        }
391<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l391>
        return -1;
392<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l392>
    }
393<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=d305b063ffd9dd01683e9105cfc6902948537ca4;hb=HEAD#l393>

If the NFS mount point exists on KVM host, and if the libvirt storage is missing for some
reason(BUG CLOUDSTACk-2729), then the storage pool will never be created in libvirt unless
you stop all the VMs, and umount the mount point.

While, on libvirt 0.9.10, the code handles the situation is different:
   /* Short-circuit if already mounted */
409<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=1af12e67469bb4911067ed541a04bcf2d43251e3;hb=bca060a363d3679c37ecc8bfd17f25dfa0781abb#l409>
    if ((ret = virStorageBackendFileSystemIsMounted(pool)) != 0) {
410<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=1af12e67469bb4911067ed541a04bcf2d43251e3;hb=bca060a363d3679c37ecc8bfd17f25dfa0781abb#l410>
        if (ret < 0)
411<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=1af12e67469bb4911067ed541a04bcf2d43251e3;hb=bca060a363d3679c37ecc8bfd17f25dfa0781abb#l411>
            return -1;
412<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=1af12e67469bb4911067ed541a04bcf2d43251e3;hb=bca060a363d3679c37ecc8bfd17f25dfa0781abb#l412>
        else
413<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=1af12e67469bb4911067ed541a04bcf2d43251e3;hb=bca060a363d3679c37ecc8bfd17f25dfa0781abb#l413>
            return 0;
414<http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/storage/storage_backend_fs.c;h=1af12e67469bb4911067ed541a04bcf2d43251e3;hb=bca060a363d3679c37ecc8bfd17f25dfa0781abb#l414>
    }

So please stay on libvirt 0.9.10, or ask Redhat to fix the issue.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message