From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60412) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFl9u-0002wH-UO for qemu-devel@nongnu.org; Mon, 26 Jan 2015 10:01:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YFl9s-0007aO-Cf for qemu-devel@nongnu.org; Mon, 26 Jan 2015 10:00:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55181) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YFl9r-0007aB-Ni for qemu-devel@nongnu.org; Mon, 26 Jan 2015 10:00:56 -0500 From: Max Reitz Date: Mon, 26 Jan 2015 10:00:34 -0500 Message-Id: <1422284444-12529-5-git-send-email-mreitz@redhat.com> In-Reply-To: <1422284444-12529-1-git-send-email-mreitz@redhat.com> References: <1422284444-12529-1-git-send-email-mreitz@redhat.com> Subject: [Qemu-devel] [PATCH v3 04/14] block/xen: Use blk_new_open() in blk_connect() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Max Reitz , Markus Armbruster , Stefan Hajnoczi , Stefano Stabellini Signed-off-by: Max Reitz --- hw/block/xen_disk.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/hw/block/xen_disk.c b/hw/block/xen_disk.c index 21842a0..1b0257c 100644 --- a/hw/block/xen_disk.c +++ b/hw/block/xen_disk.c @@ -40,6 +40,8 @@ #include "xen_blkif.h" #include "sysemu/blockdev.h" #include "sysemu/block-backend.h" +#include "qapi/qmp/qdict.h" +#include "qapi/qmp/qstring.h" /* ------------------------------------------------------------- */ @@ -897,30 +899,24 @@ static int blk_connect(struct XenDevice *xendev) blkdev->dinfo = drive_get(IF_XEN, 0, index); if (!blkdev->dinfo) { Error *local_err = NULL; - BlockBackend *blk; - BlockDriver *drv; - BlockDriverState *bs; + QDict *options = NULL; - /* setup via xenbus -> create new block driver instance */ - xen_be_printf(&blkdev->xendev, 2, "create new bdrv (xenbus setup)\n"); - blk = blk_new_with_bs(blkdev->dev, NULL); - if (!blk) { - return -1; + if (strcmp(blkdev->fileproto, "")) { + options = qdict_new(); + qdict_put_obj(options, "driver", + QOBJECT(qstring_from_str(blkdev->fileproto))); } - blkdev->blk = blk; - bs = blk_bs(blk); - drv = bdrv_find_whitelisted_format(blkdev->fileproto, readonly); - if (bdrv_open(&bs, blkdev->filename, NULL, NULL, qflags, - drv, &local_err) != 0) { + /* setup via xenbus -> create new block driver instance */ + xen_be_printf(&blkdev->xendev, 2, "create new bdrv (xenbus setup)\n"); + blkdev->blk = blk_new_open(blkdev->dev, blkdev->filename, NULL, options, + qflags, &local_err); + if (!blkdev->blk) { xen_be_printf(&blkdev->xendev, 0, "error: %s\n", error_get_pretty(local_err)); error_free(local_err); - blk_unref(blk); - blkdev->blk = NULL; return -1; } - assert(bs == blk_bs(blk)); } else { /* setup via qemu cmdline -> already setup for us */ xen_be_printf(&blkdev->xendev, 2, "get configured bdrv (cmdline setup)\n"); -- 2.1.0