[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH V18 09/25] block: add QemuOpts support for iscsi.c
From: |
Dong Xu Wang |
Subject: |
[Qemu-devel] [PATCH V18 09/25] block: add QemuOpts support for iscsi.c |
Date: |
Tue, 13 Aug 2013 12:31:50 +0800 |
Signed-off-by: Dong Xu Wang <address@hidden>
---
block/iscsi.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
diff --git a/block/iscsi.c b/block/iscsi.c
index e7c1c2b..de2fd8c 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -1305,6 +1305,65 @@ static QEMUOptionParameter iscsi_create_options[] = {
{ NULL }
};
+static int iscsi_create_new(const char *filename, QemuOpts *opts)
+{
+ int ret = 0;
+ int64_t total_size = 0;
+ BlockDriverState bs;
+ IscsiLun *iscsilun = NULL;
+ QDict *bs_options;
+
+ memset(&bs, 0, sizeof(BlockDriverState));
+
+ /* Read out options */
+ total_size =
+ qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0) / BDRV_SECTOR_SIZE;
+ bs.opaque = g_malloc0(sizeof(struct IscsiLun));
+ iscsilun = bs.opaque;
+
+ bs_options = qdict_new();
+ qdict_put(bs_options, "filename", qstring_from_str(filename));
+ ret = iscsi_open(&bs, bs_options, 0);
+ QDECREF(bs_options);
+
+ if (ret != 0) {
+ goto out;
+ }
+ if (iscsilun->nop_timer) {
+ qemu_del_timer(iscsilun->nop_timer);
+ qemu_free_timer(iscsilun->nop_timer);
+ }
+ if (iscsilun->type != TYPE_DISK) {
+ ret = -ENODEV;
+ goto out;
+ }
+ if (bs.total_sectors < total_size) {
+ ret = -ENOSPC;
+ goto out;
+ }
+
+ ret = 0;
+out:
+ if (iscsilun->iscsi != NULL) {
+ iscsi_destroy_context(iscsilun->iscsi);
+ }
+ g_free(bs.opaque);
+ return ret;
+}
+
+static QemuOptsList iscsi_create_opts = {
+ .name = "iscsi-create-opts",
+ .head = QTAILQ_HEAD_INITIALIZER(iscsi_create_opts.head),
+ .desc = {
+ {
+ .name = BLOCK_OPT_SIZE,
+ .type = QEMU_OPT_SIZE,
+ .help = "Virtual disk size"
+ },
+ { /* end of list */ }
+ }
+};
+
static BlockDriver bdrv_iscsi = {
.format_name = "iscsi",
.protocol_name = "iscsi",
@@ -1313,7 +1372,9 @@ static BlockDriver bdrv_iscsi = {
.bdrv_file_open = iscsi_open,
.bdrv_close = iscsi_close,
.bdrv_create = iscsi_create,
+ .bdrv_create_new = iscsi_create_new,
.create_options = iscsi_create_options,
+ .bdrv_create_opts = &iscsi_create_opts,
.bdrv_getlength = iscsi_getlength,
.bdrv_truncate = iscsi_truncate,
--
1.7.11.7
- [Qemu-devel] [PATCH V18 00/25] replace QEMUOptionParameter with QemuOpts parser, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 01/25] qemu-option: add def_value_str in QemuOptDesc struct and rewrite qemu_opts_print, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 02/25] qemu-option: avoid duplication of default value in QemuOpts, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 03/25] qemu-option: create four QemuOptsList related functions, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 04/25] qemu-option: create some QemuOpts functons, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 05/25] qemu-option: opt->str store digit, without suffixes, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 06/25] add interface to block, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 07/25] block: add QemuOpts support for cow.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 08/25] block: add QemuOpts support for gluster.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 09/25] block: add QemuOpts support for iscsi.c,
Dong Xu Wang <=
- [Qemu-devel] [PATCH V18 10/25] block: add QemuOpts support for qcow.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 11/25] block: add QemuOpts support for qcow2.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 12/25] block: add QemuOpts support for qed.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 13/25] block: add QemuOpts support for raw-posix.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 14/25] block: add QemuOpts support for raw-win32.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 15/25] block: add QemuOpts support for raw.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 16/25] block: add QemuOpts support for rbd.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 17/25] block: add QemuOpts support for sheepdog.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 18/25] block: add QemuOpts support for ssh.c, Dong Xu Wang, 2013/08/13
- [Qemu-devel] [PATCH V18 19/25] block: add QemuOpts support for vdi.c, Dong Xu Wang, 2013/08/13