[libvirt] [PATCH 03/10] storage: gluster: Introduce dummy functions for creating a volume

Eric Blake eblake at redhat.com
Thu Jan 9 22:57:43 UTC 2014


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 604 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140109/fd786f78/attachment-0001.sig>


More information about the libvir-list mailing list