From patchwork Tue Aug 13 04:31:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Wang X-Patchwork-Id: 266696 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (unknown [IPv6:2001:4830:134:3::12]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 9A9022C012F for ; Tue, 13 Aug 2013 14:39:36 +1000 (EST) Received: from localhost ([::1]:59449 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V96OM-0004Wr-PP for incoming@patchwork.ozlabs.org; Tue, 13 Aug 2013 00:39:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54844) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V96IJ-0006wl-QG for qemu-devel@nongnu.org; Tue, 13 Aug 2013 00:33:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V96IB-0000MT-CO for qemu-devel@nongnu.org; Tue, 13 Aug 2013 00:33:19 -0400 Received: from mail-pb0-x22f.google.com ([2607:f8b0:400e:c01::22f]:62933) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V96IB-0000MD-3O for qemu-devel@nongnu.org; Tue, 13 Aug 2013 00:33:11 -0400 Received: by mail-pb0-f47.google.com with SMTP id rr4so7498999pbb.6 for ; Mon, 12 Aug 2013 21:33:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=WfGLqsafFYHdjk6tD7NV8WZRNnwgEcpL16drNGSRrko=; b=vtnCMh8lq7pBoUp7epPlr21Tq8PlQxaXW1HmnCnUEwmOnT9SYjHpYbzkrMPHYNrY0s ME8zUKLu0Li3NCKZF6403PmHcafDg3TAbuNujlxdHk1GNFzXMiAu6A+C0llbkSC+i8hr Q+TNN8zDb96XEqdU7JuwRrGilNknSbwVIR83036y17tie3vcEfgwFWc9JRTnr2k0mdBN Nw0f6jHh7q3cswZfs3PDaC2wPqbN6yED7bGed2J+ltKMOJ3drl7PyoKRVLs6hdFe+L0A Z4tySiIGhhgrni2YRowNnO9lJSpKQ8FQm95pVVifTBv84qqyK4FBT9jYwC6rbmkbgTtZ zDZA== X-Received: by 10.66.179.143 with SMTP id dg15mr2482032pac.52.1376368390353; Mon, 12 Aug 2013 21:33:10 -0700 (PDT) Received: from 11.wdongxu.kvm58 ([202.108.130.153]) by mx.google.com with ESMTPSA id mz5sm10285023pbc.18.2013.08.12.21.33.07 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 12 Aug 2013 21:33:09 -0700 (PDT) From: Dong Xu Wang To: qemu-devel@nongnu.org Date: Tue, 13 Aug 2013 12:31:49 +0800 Message-Id: <1376368326-7433-9-git-send-email-wdongxu@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.11.7 In-Reply-To: <1376368326-7433-1-git-send-email-wdongxu@linux.vnet.ibm.com> References: <1376368326-7433-1-git-send-email-wdongxu@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c01::22f Cc: kwolf@redhat.com, wdongxu@cn.ibm.com, stefanha@redhat.com, Dong Xu Wang Subject: [Qemu-devel] [PATCH V18 08/25] block: add QemuOpts support for gluster.c X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Dong Xu Wang --- block/gluster.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/block/gluster.c b/block/gluster.c index 645b7f1..eb9d644 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -407,6 +407,43 @@ out: return ret; } +static int qemu_gluster_create_new(const char *filename, QemuOpts *opts) +{ + struct glfs *glfs; + struct glfs_fd *fd; + int ret = 0; + int64_t total_size = 0; + GlusterConf *gconf = g_malloc0(sizeof(GlusterConf)); + + glfs = qemu_gluster_init(gconf, filename); + if (!glfs) { + ret = -errno; + goto out; + } + + total_size = + qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0) / BDRV_SECTOR_SIZE; + + fd = glfs_creat(glfs, gconf->image, + O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, S_IRUSR | S_IWUSR); + if (!fd) { + ret = -errno; + } else { + if (glfs_ftruncate(fd, total_size * BDRV_SECTOR_SIZE) != 0) { + ret = -errno; + } + if (glfs_close(fd) != 0) { + ret = -errno; + } + } +out: + qemu_gluster_gconf_free(gconf); + if (glfs) { + glfs_fini(glfs); + } + return ret; +} + static void qemu_gluster_aio_cancel(BlockDriverAIOCB *blockacb) { GlusterAIOCB *acb = (GlusterAIOCB *)blockacb; @@ -635,6 +672,19 @@ static QEMUOptionParameter qemu_gluster_create_options[] = { { NULL } }; +static QemuOptsList qemu_gluster_create_opts = { + .name = "qemu-gluster-create-opts", + .head = QTAILQ_HEAD_INITIALIZER(qemu_gluster_create_opts.head), + .desc = { + { + .name = BLOCK_OPT_SIZE, + .type = QEMU_OPT_SIZE, + .help = "Virtual disk size" + }, + { /* end of list */ } + } +}; + static BlockDriver bdrv_gluster = { .format_name = "gluster", .protocol_name = "gluster", @@ -642,6 +692,7 @@ static BlockDriver bdrv_gluster = { .bdrv_file_open = qemu_gluster_open, .bdrv_close = qemu_gluster_close, .bdrv_create = qemu_gluster_create, + .bdrv_create_new = qemu_gluster_create_new, .bdrv_getlength = qemu_gluster_getlength, .bdrv_get_allocated_file_size = qemu_gluster_allocated_file_size, .bdrv_truncate = qemu_gluster_truncate, @@ -653,6 +704,7 @@ static BlockDriver bdrv_gluster = { .bdrv_aio_discard = qemu_gluster_aio_discard, #endif .create_options = qemu_gluster_create_options, + .bdrv_create_opts = &qemu_gluster_create_opts, }; static BlockDriver bdrv_gluster_tcp = { @@ -662,6 +714,7 @@ static BlockDriver bdrv_gluster_tcp = { .bdrv_file_open = qemu_gluster_open, .bdrv_close = qemu_gluster_close, .bdrv_create = qemu_gluster_create, + .bdrv_create_new = qemu_gluster_create_new, .bdrv_getlength = qemu_gluster_getlength, .bdrv_get_allocated_file_size = qemu_gluster_allocated_file_size, .bdrv_truncate = qemu_gluster_truncate, @@ -673,6 +726,7 @@ static BlockDriver bdrv_gluster_tcp = { .bdrv_aio_discard = qemu_gluster_aio_discard, #endif .create_options = qemu_gluster_create_options, + .bdrv_create_opts = &qemu_gluster_create_opts, }; static BlockDriver bdrv_gluster_unix = { @@ -682,6 +736,7 @@ static BlockDriver bdrv_gluster_unix = { .bdrv_file_open = qemu_gluster_open, .bdrv_close = qemu_gluster_close, .bdrv_create = qemu_gluster_create, + .bdrv_create_new = qemu_gluster_create_new, .bdrv_getlength = qemu_gluster_getlength, .bdrv_get_allocated_file_size = qemu_gluster_allocated_file_size, .bdrv_truncate = qemu_gluster_truncate, @@ -693,6 +748,7 @@ static BlockDriver bdrv_gluster_unix = { .bdrv_aio_discard = qemu_gluster_aio_discard, #endif .create_options = qemu_gluster_create_options, + .bdrv_create_opts = &qemu_gluster_create_opts, }; static BlockDriver bdrv_gluster_rdma = { @@ -702,6 +758,7 @@ static BlockDriver bdrv_gluster_rdma = { .bdrv_file_open = qemu_gluster_open, .bdrv_close = qemu_gluster_close, .bdrv_create = qemu_gluster_create, + .bdrv_create_new = qemu_gluster_create_new, .bdrv_getlength = qemu_gluster_getlength, .bdrv_get_allocated_file_size = qemu_gluster_allocated_file_size, .bdrv_truncate = qemu_gluster_truncate, @@ -713,6 +770,7 @@ static BlockDriver bdrv_gluster_rdma = { .bdrv_aio_discard = qemu_gluster_aio_discard, #endif .create_options = qemu_gluster_create_options, + .bdrv_create_opts = &qemu_gluster_create_opts, }; static void bdrv_gluster_init(void)