[libvirt] [BUG] storage_backend_fs: failung virStorageBackendProbeTarget() disabled whole pool

Daniel P. Berrange berrange at redhat.com
Thu Feb 17 11:21:11 UTC 2011


On Thu, Feb 17, 2011 at 11:21:26AM +0100, Philipp Hahn wrote:
> Hello,
> 
> I have a problem with the following code fragment, which refreshes a directory 
> based storage pool:
> 
> storage_backend_fs.c#virStorageBackendFileSystemRefresh(...)
> ...
>     while ((ent = readdir(dir)) != NULL) {
> ...
>        if ((ret = virStorageBackendProbeTarget(...) < 0) {
>             if (ret == -1)
>                 goto cleanup;
> ...
>        }
> ...
>     }
>     closedir(dir);
> ...
>     return 0;
> cleanup:
> ...
>     return -1;
> }
> 
> This disables the whole pool, if it contains an Qcow2 volume while, whose 
> backfile is (currently) unavailable (because, for example, the central NFS 
> store is currently unavailable or the permissions don't allow reading). This 
> is very annoying, since it's hard to find the Qcow2 volume, which breaks the 
> pool. I use the following command to find broken volumes:
> find "$dir" -maxdepth 1 \( -type f -o -type l \) \( -exec kvm-img info {} 
> \; -o -print \) 2>/dev/null
> Even worse, you can't delete the broken or re-create the missing volume with 
> virsh allone.
> 
> To reproduce:
>   dir=$(mktemp -d)
>   virsh pool-create-as tmp dir '' '' '' '' "$dir"
>   virsh vol-create-as --format qcow2 tmp back 1G
>   virsh vol-create-as --format qcow2 --backing-vol-format qcow2 --backing-vol 
> back tmp cow 1G
>   virsh vol-delete --pool tmp back
>   virsh pool-refresh tmp
> After the last step, the pool will be gone (because it was not persistent). As 
> long as the now broken image stays in the directory, you will not be able to 
> re-create or re-start the pool.
> 
> The easiest 'fix' would be to ignore all errors regarding the detection of the 
> backing files file format. This would at least allow users to still create 
> new volumes and list existing volumes.

I agree, we should be more robust in that respect & treat failure to probe
the backing store as non-fatal.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list