[libvirt] [PATCH] storage_backend_fs.c: do not ignore probe failure

Daniel P. Berrange berrange at redhat.com
Mon Jan 18 11:21:51 UTC 2010


On Mon, Jan 18, 2010 at 10:40:26AM +0100, Jim Meyering wrote:
> When virStorageBackendProbeTarget fails, it returns -1 or -2.
> The two uses below obviously intended to handle those cases
> differently, but due to a wrong comparison, they always treated a
> "real" (e.g., open) failure (-1) just like an ignorable "wrong file type"
> failure (-2).
> 
> FYI, coverity reported that the "goto cleanup" statement was
> unreachable, which was true in each case, but hardly the real problem.

> @@ -562,7 +562,7 @@ virStorageBackendFileSystemRefresh(virConnectPtr conn,
>                                                  &backingStore,
>                                                  &vol->allocation,
>                                                  &vol->capacity,
> -                                                &vol->target.encryption) < 0)) {
> +                                                &vol->target.encryption) != 0)) {
>              if (ret == -1)
>                  goto cleanup;
>              else {
> @@ -603,7 +603,7 @@ virStorageBackendFileSystemRefresh(virConnectPtr conn,
>                  if ((ret = virStorageBackendProbeTarget(conn,
>                                                          &vol->backingStore,
>                                                          NULL, NULL, NULL,
> -                                                        NULL)) < 0) {
> +                                                        NULL)) != 0) {
>                      if (ret == -1)
>                          goto cleanup;
>                      else {

I don't understand how this is making any difference. The method
virStorageBackendProbeTarget can return 0, -1 or -2, so

    virStorageBackendProbeTarget < 0  catches the -1 and -2 cases
    virStorageBackendProbeTarget != 0 catches the -1 and -2 cases

I only see this change making a difference if one of the error return values
is a positive integer greater than 0, but we don't have that here. What am
I missing ? 

Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list