From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37269) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UUEyg-0004gN-Us for qemu-devel@nongnu.org; Mon, 22 Apr 2013 07:32:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UUEyf-00029b-N0 for qemu-devel@nongnu.org; Mon, 22 Apr 2013 07:32:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:29180) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UUEyf-00029P-Df for qemu-devel@nongnu.org; Mon, 22 Apr 2013 07:32:09 -0400 From: Kevin Wolf Date: Mon, 22 Apr 2013 13:31:29 +0200 Message-Id: <1366630294-18984-16-git-send-email-kwolf@redhat.com> In-Reply-To: <1366630294-18984-1-git-send-email-kwolf@redhat.com> References: <1366630294-18984-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 15/20] rbd: Use bdrv_open options instead of filename List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws Cc: kwolf@redhat.com, qemu-devel@nongnu.org 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 Reviewed-by: Eric Blake --- block/rbd.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/block/rbd.c b/block/rbd.c index 141b488..0d68145 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -441,7 +441,21 @@ static int qemu_rbd_aio_flush_cb(void *opaque) return (s->qemu_aio_count > 0); } -static int qemu_rbd_open(BlockDriverState *bs, const char *filename, +/* TODO Convert to fine grained options */ +static QemuOptsList runtime_opts = { + .name = "rbd", + .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), + .desc = { + { + .name = "filename", + .type = QEMU_OPT_STRING, + .help = "Specification of the rbd image", + }, + { /* end of list */ } + }, +}; + +static int qemu_rbd_open(BlockDriverState *bs, const char *dummy, QDict *options, int flags) { BDRVRBDState *s = bs->opaque; @@ -450,8 +464,23 @@ static int qemu_rbd_open(BlockDriverState *bs, const char *filename, char conf[RBD_MAX_CONF_SIZE]; char clientname_buf[RBD_MAX_CONF_SIZE]; char *clientname; + QemuOpts *opts; + Error *local_err = NULL; + const char *filename; int r; + 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); + qemu_opts_del(opts); + return -EINVAL; + } + + filename = qemu_opt_get(opts, "filename"); + qemu_opts_del(opts); + if (qemu_rbd_parsename(filename, pool, sizeof(pool), snap_buf, sizeof(snap_buf), s->name, sizeof(s->name), -- 1.8.1.4