
On 01/09/2014 09:15 AM, Peter Krempa wrote:
The temporary pool code will need to initialize dummy gluster volumes which needs the createVol function of the storage backend. This patch implements it only for that purpose. When an user will get an error
s/When an user/A user/
message that it is not implemented on an attempt to create a volume in a gluster pool. --- src/storage/storage_backend_gluster.c | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+)
+ + VIR_FREE(vol->key); + if (virAsprintf(&vol->key, "/%s%s%s", state->volname, state->dir, + vol->name) < 0)
This doesn't match the docs, which say gluster volume keys lack a leading slash; see also virStorageBackendGlusterRefreshVol (where it took me a couple tries to get it right).
+ goto cleanup; + + tmp = state->uri->path; + state->uri->path = vol->key; + VIR_FREE(vol->target.path); + if (!(vol->target.path = virURIFormat(state->uri))) { + state->uri->path = tmp; + goto cleanup; + } + state->uri->path = tmp;
In fact, since both this function and virStorageBackendGlusterRefreshVol are doing the same thing, it might be nice to factor it into a helper function, so that if we change our minds yet again about the leading slash in gluster key names, we only have to change one spot in code.
+ + if (internal) { + if (glfs_stat(state->vol, vol->name, &st) == 0 && + S_ISDIR(st.st_mode)) { + vol->type = VIR_STORAGE_VOL_NETDIR; + vol->target.format = VIR_STORAGE_FILE_DIR; + } + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("gluster pool backend doesn't " + "yet support volume creation")); + goto cleanup;
It might be nice to hoist the error reporting earlier in the function, instead of first doing malloc's only to throw them away. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org