From 8b6567005cd9342464bb502c89b8a004cece8e70 Mon Sep 17 00:00:00 2001 From: Osier Yang Date: Wed, 21 Nov 2012 11:22:39 +0800 Subject: [PATCH] storage: Fix bug of fs pool destroying Regression introduced by commit 258e06c85b7, "ret" could be set to 1 or 0 by virStorageBackendFileSystemIsMounted before goto cleanup. This could mislead the callers (up to the public API virStoragePoolDestroy) to return success even the underlying umount command fails. (cherry picked from commit f4ac06569a8ffce24fb8c07a0fc01574e38de6e4) --- src/storage/storage_backend_fs.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c index 1e48a51984..780f93f951 100644 --- a/src/storage/storage_backend_fs.c +++ b/src/storage/storage_backend_fs.c @@ -454,6 +454,7 @@ static int virStorageBackendFileSystemUnmount(virStoragePoolObjPtr pool) { virCommandPtr cmd = NULL; int ret = -1; + int rc; if (pool->def->type == VIR_STORAGE_POOL_NETFS) { if (pool->def->source.nhost != 1) { @@ -480,12 +481,8 @@ virStorageBackendFileSystemUnmount(virStoragePoolObjPtr pool) { } /* Short-circuit if already unmounted */ - if ((ret = virStorageBackendFileSystemIsMounted(pool)) != 1) { - if (ret < 0) - return -1; - else - return 0; - } + if ((rc = virStorageBackendFileSystemIsMounted(pool)) != 1) + return rc; cmd = virCommandNewArgList(UMOUNT, pool->def->target.path,