From 0f6c50b9b66affc19373f5aeb6d1add83877b897 Mon Sep 17 00:00:00 2001
From: Peter Krempa name
is the path relative to
the effective mount specified for the pool; and
- the key
is a path including the gluster volume
- name and any subdirectory specified by the pool.
key
is a string that identifies a single volume
+ uniquely. Currently the key
attribute consists of the
+ URI of the volume but it may be changed to a UUID of the volume
+ in the future.
<volume> <name>myfile</name> - <key>volname/myfile</key> + <key>gluster://localhost/volname/myfile</key> <source> </source> <capacity unit='bytes'>53687091200</capacity> diff --git a/src/storage/storage_backend_gluster.c b/src/storage/storage_backend_gluster.c index 5e0acc0651..67adda9eb7 100644 --- a/src/storage/storage_backend_gluster.c +++ b/src/storage/storage_backend_gluster.c @@ -187,6 +187,7 @@ virStorageBackendGlusterSetMetadata(virStorageBackendGlusterStatePtr state, const char *name) { int ret = -1; + char *path = NULL; char *tmp; VIR_FREE(vol->key); @@ -201,12 +202,12 @@ virStorageBackendGlusterSetMetadata(virStorageBackendGlusterStatePtr state, goto cleanup; } - if (virAsprintf(&vol->key, "%s%s%s", state->volname, state->dir, + if (virAsprintf(&path, "%s%s%s", state->volname, state->dir, vol->name) < 0) goto cleanup; tmp = state->uri->path; - if (virAsprintf(&state->uri->path, "/%s", vol->key) < 0) { + if (virAsprintf(&state->uri->path, "/%s", path) < 0) { state->uri->path = tmp; goto cleanup; } @@ -218,9 +219,14 @@ virStorageBackendGlusterSetMetadata(virStorageBackendGlusterStatePtr state, VIR_FREE(state->uri->path); state->uri->path = tmp; + /* the path is unique enough to serve as a volume key */ + if (VIR_STRDUP(vol->key, vol->target.path) < 0) + goto cleanup; + ret = 0; cleanup: + VIR_FREE(path); return ret; }