[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] Block: Support creation of SCSI VMDK images in
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] Re: [PATCH] Block: Support creation of SCSI VMDK images in qemu-img. |
Date: |
Tue, 03 Aug 2010 14:47:28 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100720 Fedora/3.0.6-1.fc12 Thunderbird/3.0.6 |
Hi Alex,
Am 03.08.2010 14:17, schrieb Alexander Graf:
> While looking through patches we have not upstreamed yet, I stumbled over this
> trivial patch that Kevin created back in the day. It allows to specify the
> creation of scsi type vmdk images.
>
> Signed-off-by: Alexander Graf <address@hidden>
Aaron (CCed) sent a similar patch only a few days ago (subject
"[Qemu-devel] PATCH: Adding options to generate SCSI based VMDK
images"). The only difference I see is that his option went like
interface=[ide|lsilogic|buslogic] instead of hard-coding lsilogic. I
think this is a better interface.
Aaron, I asked you to fix some formal things (including tabs and SoB),
but you haven't resubmitted the patch yet. Are you going to send a fixed
version, or should I rather take Alex' patch?
Kevin
> ---
> block/vmdk.c | 12 ++++++++++--
> block_int.h | 2 ++
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 2d4ba42..64f1c88 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -686,7 +686,7 @@ static int vmdk_create(const char *filename,
> QEMUOptionParameter *options)
> "ddb.geometry.cylinders = \"%" PRId64 "\"\n"
> "ddb.geometry.heads = \"16\"\n"
> "ddb.geometry.sectors = \"63\"\n"
> - "ddb.adapterType = \"ide\"\n";
> + "ddb.adapterType = \"%s\"\n";
> char desc[1024];
> const char *real_filename, *temp_str;
> int64_t total_size = 0;
> @@ -702,6 +702,8 @@ static int vmdk_create(const char *filename,
> QEMUOptionParameter *options)
> backing_file = options->value.s;
> } else if (!strcmp(options->name, BLOCK_OPT_COMPAT6)) {
> flags |= options->value.n ? BLOCK_FLAG_COMPAT6: 0;
> + } else if (!strcmp(options->name, BLOCK_OPT_SCSI)) {
> + flags |= options->value.n ? BLOCK_FLAG_SCSI: 0;
> }
> options++;
> }
> @@ -799,7 +801,8 @@ static int vmdk_create(const char *filename,
> QEMUOptionParameter *options)
> snprintf(desc, sizeof(desc), desc_template, (unsigned int)time(NULL),
> total_size, real_filename,
> (flags & BLOCK_FLAG_COMPAT6 ? 6 : 4),
> - total_size / (int64_t)(63 * 16));
> + total_size / (int64_t)(63 * 16),
> + flags & BLOCK_FLAG_SCSI ? "lsilogic" : "ide");
>
> /* write the descriptor */
> lseek(fd, le64_to_cpu(header.desc_offset) << 9, SEEK_SET);
> @@ -845,6 +848,11 @@ static QEMUOptionParameter vmdk_create_options[] = {
> .type = OPT_FLAG,
> .help = "VMDK version 6 image"
> },
> + {
> + .name = BLOCK_OPT_SCSI,
> + .type = OPT_FLAG,
> + .help = "SCSI image"
> + },
> { NULL }
> };
>
> diff --git a/block_int.h b/block_int.h
> index b863451..01ba00e 100644
> --- a/block_int.h
> +++ b/block_int.h
> @@ -31,10 +31,12 @@
> #define BLOCK_FLAG_ENCRYPT 1
> #define BLOCK_FLAG_COMPRESS 2
> #define BLOCK_FLAG_COMPAT6 4
> +#define BLOCK_FLAG_SCSI 8
>
> #define BLOCK_OPT_SIZE "size"
> #define BLOCK_OPT_ENCRYPT "encryption"
> #define BLOCK_OPT_COMPAT6 "compat6"
> +#define BLOCK_OPT_SCSI "scsi"
> #define BLOCK_OPT_BACKING_FILE "backing_file"
> #define BLOCK_OPT_BACKING_FMT "backing_fmt"
> #define BLOCK_OPT_CLUSTER_SIZE "cluster_size"