From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:57593) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UQktl-0002WD-9w for qemu-devel@nongnu.org; Fri, 12 Apr 2013 16:48:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UQktg-0004qp-27 for qemu-devel@nongnu.org; Fri, 12 Apr 2013 16:48:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:6122) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UQktf-0004qH-QZ for qemu-devel@nongnu.org; Fri, 12 Apr 2013 16:48:36 -0400 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r3CKmZnN018717 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 12 Apr 2013 16:48:35 -0400 From: Kevin Wolf Date: Fri, 12 Apr 2013 22:48:05 +0200 Message-Id: <1365799688-19918-13-git-send-email-kwolf@redhat.com> In-Reply-To: <1365799688-19918-1-git-send-email-kwolf@redhat.com> References: <1365799688-19918-1-git-send-email-kwolf@redhat.com> Subject: [Qemu-devel] [PATCH 12/15] sheepdog: Use bdrv_open options instead of filename List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, stefanha@redhat.com 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 --- block/sheepdog.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/block/sheepdog.c b/block/sheepdog.c index 987018e..40bc55a 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -1126,7 +1126,21 @@ static int write_object(int fd, char *buf, uint64_t oid, int copies, create, cache_flags); } -static int sd_open(BlockDriverState *bs, const char *filename, +/* TODO Convert to fine grained options */ +static QemuOptsList runtime_opts = { + .name = "sheepdog", + .head = QTAILQ_HEAD_INITIALIZER(runtime_opts.head), + .desc = { + { + .name = "filename", + .type = QEMU_OPT_STRING, + .help = "URL to the sheepdog image", + }, + { /* end of list */ } + }, +}; + +static int sd_open(BlockDriverState *bs, const char *dummy, QDict *options, int flags) { int ret, fd; @@ -1135,6 +1149,20 @@ static int sd_open(BlockDriverState *bs, const char *filename, char vdi[SD_MAX_VDI_LEN], tag[SD_MAX_VDI_TAG_LEN]; uint32_t snapid; char *buf = NULL; + 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"); QLIST_INIT(&s->inflight_aio_head); QLIST_INIT(&s->pending_aio_head); @@ -1199,6 +1227,7 @@ static int sd_open(BlockDriverState *bs, const char *filename, bs->total_sectors = s->inode.vdi_size / SECTOR_SIZE; pstrcpy(s->name, sizeof(s->name), vdi); qemu_co_mutex_init(&s->lock); + qemu_opts_del(opts); g_free(buf); return 0; out: @@ -1206,6 +1235,7 @@ out: if (s->fd >= 0) { closesocket(s->fd); } + qemu_opts_del(opts); g_free(buf); return ret; } -- 1.8.1.4