
On 06/11/14 17:13, Ján Tomko wrote:
On 06/05/2014 01:52 PM, Peter Krempa wrote:
Add a helper to do all the lookup steps and remove a ton of duplicated code. --- src/storage/storage_driver.c | 292 ++++++++++--------------------------------- 1 file changed, 69 insertions(+), 223 deletions(-)
ACK
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index c9916ff..26b2601 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1520,45 +1520,75 @@ storageVolDeleteInternal(virStorageVolPtr obj, }
-static int -storageVolDelete(virStorageVolPtr obj, - unsigned int flags) +static virStorageVolDefPtr +virStorageVolDefFromVol(virStorageVolPtr obj, + virStoragePoolObjPtr *pool, + virStorageBackendPtr *backend) { virStorageDriverStatePtr driver = obj->conn->storagePrivateData; - virStoragePoolObjPtr pool; - virStorageBackendPtr backend; virStorageVolDefPtr vol = NULL; - int ret = -1;
+ + *pool = NULL; + if (backend) + *backend = NULL;
Initializing *pool here might be useful if someone decides to rearrange the code again, since it's used in the cleanup section, but I don't think we need to initialize backend - the caller should only use the values if this function returns non-NULL.
You are right, I've removed it. Also by rearranging the code I was able to remove touching of "backend" in the error: section.
storageDriverLock(driver); - pool = virStoragePoolObjFindByName(&driver->pools, obj->pool); + *pool = virStoragePoolObjFindByName(&driver->pools, obj->pool); storageDriverUnlock(driver);
- if (!pool) { + if (!*pool) { virReportError(VIR_ERR_NO_STORAGE_POOL, _("no storage pool with matching name '%s'"), obj->pool); - goto cleanup; + return NULL; }
+ + +static int +storageVolDelete(virStorageVolPtr obj, + unsigned int flags) +{ + virStoragePoolObjPtr pool; + virStorageBackendPtr backend; + virStorageVolDefPtr vol = NULL; + int ret = -1; + + if (!(vol = virStorageVolDefFromVol(obj, &pool, &backend))) + goto cleanup;
You can return -1 here.
Thanks; I've done so.
+ if (virStorageVolDeleteEnsureACL(obj->conn, pool->def, vol) < 0) goto cleanup;
Jan
And pushed this one too. Thanks for reviewing. Peter