storage: Fix bug of fs pool destroying

Regression introduced by commit 258e06c85b, "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.
This commit is contained in:
Osier Yang 2012-11-21 11:22:39 +08:00
parent f0e72b2f5c
commit f4ac06569a

View File

@ -449,6 +449,7 @@ static int
virStorageBackendFileSystemUnmount(virStoragePoolObjPtr pool) { virStorageBackendFileSystemUnmount(virStoragePoolObjPtr pool) {
virCommandPtr cmd = NULL; virCommandPtr cmd = NULL;
int ret = -1; int ret = -1;
int rc;
if (pool->def->type == VIR_STORAGE_POOL_NETFS) { if (pool->def->type == VIR_STORAGE_POOL_NETFS) {
if (pool->def->source.nhost != 1) { if (pool->def->source.nhost != 1) {
@ -475,12 +476,8 @@ virStorageBackendFileSystemUnmount(virStoragePoolObjPtr pool) {
} }
/* Short-circuit if already unmounted */ /* Short-circuit if already unmounted */
if ((ret = virStorageBackendFileSystemIsMounted(pool)) != 1) { if ((rc = virStorageBackendFileSystemIsMounted(pool)) != 1)
if (ret < 0) return rc;
return -1;
else
return 0;
}
cmd = virCommandNewArgList(UMOUNT, cmd = virCommandNewArgList(UMOUNT,
pool->def->target.path, pool->def->target.path,