[libvirt] [PATCH 2/2] storage: volume: Rework lookup of volume objects
Ján Tomko
jtomko at redhat.com
Wed Jun 11 15:13:01 UTC 2014
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.
>
> 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.
> +
> if (virStorageVolDeleteEnsureACL(obj->conn, pool->def, vol) < 0)
> goto cleanup;
>
Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140611/27857655/attachment-0001.sig>
More information about the libvir-list
mailing list