Patchwork [09/15] gluster: Use bdrv_open options instead of filename

login
register
mail settings
Submitter Kevin Wolf
Date April 12, 2013, 8:48 p.m.
Message ID <1365799688-19918-10-git-send-email-kwolf@redhat.com>
Download mbox | patch
Permalink /patch/236200/
State New
Headers show

Comments

Kevin Wolf - April 12, 2013, 8:48 p.m.
This is only to convert the internal interface that is used for passing
the "filename" to be parsed, but converting to actual fine grained
options is left for another day, as it doesn't look trivial.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/gluster.c | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)
Eric Blake - April 15, 2013, 8:07 p.m.
On 04/12/2013 02:48 PM, Kevin Wolf wrote:
> This is only to convert the internal interface that is used for passing
> the "filename" to be parsed, but converting to actual fine grained
> options is left for another day, as it doesn't look trivial.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  block/gluster.c | 32 +++++++++++++++++++++++++++++++-
>  1 file changed, 31 insertions(+), 1 deletion(-)
> 
> +
> +static int qemu_gluster_open(BlockDriverState *bs, const char *dummy,
>      QDict *options, int bdrv_flags)

As long as you are touching this code, should you re-indent the second
line of this signature?

> +
> +    filename = qemu_opt_get(opts, "filename");
> +
>  
>      s->glfs = qemu_gluster_init(gconf, filename);

Why the two blank lines?

Comments deal only with whitespace, so feel free to add:

Reviewed-by: Eric Blake <eblake@redhat.com>

Patch

diff --git a/block/gluster.c b/block/gluster.c
index 9ccd4d4..3796da8 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -282,13 +282,42 @@  static int qemu_gluster_aio_flush_cb(void *opaque)
     return (s->qemu_aio_count > 0);
 }
 
-static int qemu_gluster_open(BlockDriverState *bs, const char *filename,
+/* TODO Convert to fine grained options */
+static QemuOptsList runtime_opts = {
+    .name = "gluster",
+    .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head),
+    .desc = {
+        {
+            .name = "filename",
+            .type = QEMU_OPT_STRING,
+            .help = "URL to the gluster image",
+        },
+        { /* end of list */ }
+    },
+};
+
+static int qemu_gluster_open(BlockDriverState *bs, const char *dummy,
     QDict *options, int bdrv_flags)
 {
     BDRVGlusterState *s = bs->opaque;
     int open_flags = O_BINARY;
     int ret = 0;
     GlusterConf *gconf = g_malloc0(sizeof(GlusterConf));
+    QemuOpts *opts;
+    Error *local_err = NULL;
+    const char *filename;
+
+    opts = qemu_opts_create_nofail(&runtime_opts);
+    qemu_opts_absorb_qdict(opts, options, &local_err);
+    if (error_is_set(&local_err)) {
+        qerror_report_err(local_err);
+        error_free(local_err);
+        ret = -EINVAL;
+        goto out;
+    }
+
+    filename = qemu_opt_get(opts, "filename");
+
 
     s->glfs = qemu_gluster_init(gconf, filename);
     if (!s->glfs) {
@@ -322,6 +351,7 @@  static int qemu_gluster_open(BlockDriverState *bs, const char *filename,
         qemu_gluster_aio_event_reader, NULL, qemu_gluster_aio_flush_cb, s);
 
 out:
+    qemu_opts_del(opts);
     qemu_gluster_gconf_free(gconf);
     if (!ret) {
         return ret;