All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] vvfat: add a label option
@ 2015-06-18 14:08 Wolfgang Bumiller
  2015-06-18 16:09 ` Stefan Hajnoczi
  2015-06-18 21:01 ` Eric Blake
  0 siblings, 2 replies; 3+ messages in thread
From: Wolfgang Bumiller @ 2015-06-18 14:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Stefan Hajnoczi

Till now the vvfat filesystem's label was hardcoded to be
"QEMU VVFAT", now you can pass a file.label=labelname option
to the -drive to change it.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
---
 block/vvfat.c        | 25 ++++++++++++++++++++++---
 qapi/block-core.json |  3 ++-
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/block/vvfat.c b/block/vvfat.c
index e803589..d407e37 100644
--- a/block/vvfat.c
+++ b/block/vvfat.c
@@ -322,6 +322,7 @@ typedef struct BDRVVVFATState {
 
     int fat_type; /* 16 or 32 */
     array_t fat,directory,mapping;
+    char volume_label[11];
 
     unsigned int cluster_size;
     unsigned int sectors_per_cluster;
@@ -859,7 +860,7 @@ static int init_directories(BDRVVVFATState* s,
     {
 	direntry_t* entry=array_get_next(&(s->directory));
 	entry->attributes=0x28; /* archive | volume label */
-        memcpy(entry->name, "QEMU VVFAT ", sizeof(entry->name));
+        memcpy(entry->name, s->volume_label, sizeof(entry->name));
     }
 
     /* Now build FAT, and write back information into directory */
@@ -968,7 +969,8 @@ static int init_directories(BDRVVVFATState* s,
     bootsector->u.fat16.signature=0x29;
     bootsector->u.fat16.id=cpu_to_le32(0xfabe1afd);
 
-    memcpy(bootsector->u.fat16.volume_label,"QEMU VVFAT ",11);
+    memcpy(bootsector->u.fat16.volume_label, s->volume_label,
+           sizeof(bootsector->u.fat16.volume_label));
     memcpy(bootsector->fat_type,(s->fat_type==12?"FAT12   ":s->fat_type==16?"FAT16   ":"FAT32   "),8);
     bootsector->magic[0]=0x55; bootsector->magic[1]=0xaa;
 
@@ -1008,6 +1010,11 @@ static QemuOptsList runtime_opts = {
             .help = "Create a floppy rather than a hard disk image",
         },
         {
+            .name = "label",
+            .type = QEMU_OPT_STRING,
+            .help = "Use a partition label other than QEMU VVFAT",
+        },
+        {
             .name = "rw",
             .type = QEMU_OPT_BOOL,
             .help = "Make the image writable",
@@ -1069,7 +1076,7 @@ static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,
     BDRVVVFATState *s = bs->opaque;
     int cyls, heads, secs;
     bool floppy;
-    const char *dirname;
+    const char *dirname, *label;
     QemuOpts *opts;
     Error *local_err = NULL;
     int ret;
@@ -1096,6 +1103,18 @@ static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,
     s->fat_type = qemu_opt_get_number(opts, "fat-type", 0);
     floppy = qemu_opt_get_bool(opts, "floppy", false);
 
+    memset(s->volume_label, ' ', sizeof(s->volume_label));
+    label = qemu_opt_get(opts, "label");
+    if (label) {
+        size_t label_length = strlen(label);
+        if (label_length > 11) {
+            error_setg(errp, "vvfat label cannot be longer than 11 bytes");
+            ret = -EINVAL;
+            goto fail;
+        }
+        memcpy(s->volume_label, label, label_length);
+    }
+
     if (floppy) {
         /* 1.44MB or 2.88MB floppy.  2.88MB can be FAT12 (default) or FAT16. */
         if (!s->fat_type) {
diff --git a/qapi/block-core.json b/qapi/block-core.json
index afa9d3d..2a529b1 100644
--- a/qapi/block-core.json
+++ b/qapi/block-core.json
@@ -1453,13 +1453,14 @@
 # @fat-type:    #optional FAT type: 12, 16 or 32
 # @floppy:      #optional whether to export a floppy image (true) or
 #               partitioned hard disk (false; default)
+# @label:       #optional override default label
 # @rw:          #optional whether to allow write operations (default: false)
 #
 # Since: 1.7
 ##
 { 'struct': 'BlockdevOptionsVVFAT',
   'data': { 'dir': 'str', '*fat-type': 'int', '*floppy': 'bool',
-            '*rw': 'bool' } }
+            '*label': 'str', '*rw': 'bool' } }
 
 ##
 # @BlockdevOptionsGenericFormat
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH] vvfat: add a label option
  2015-06-18 14:08 [Qemu-devel] [PATCH] vvfat: add a label option Wolfgang Bumiller
@ 2015-06-18 16:09 ` Stefan Hajnoczi
  2015-06-18 21:01 ` Eric Blake
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Hajnoczi @ 2015-06-18 16:09 UTC (permalink / raw)
  To: Wolfgang Bumiller; +Cc: Kevin Wolf, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 494 bytes --]

On Thu, Jun 18, 2015 at 04:08:41PM +0200, Wolfgang Bumiller wrote:
> Till now the vvfat filesystem's label was hardcoded to be
> "QEMU VVFAT", now you can pass a file.label=labelname option
> to the -drive to change it.
> 
> Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
> ---
>  block/vvfat.c        | 25 ++++++++++++++++++++++---
>  qapi/block-core.json |  3 ++-
>  2 files changed, 24 insertions(+), 4 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Qemu-devel] [PATCH] vvfat: add a label option
  2015-06-18 14:08 [Qemu-devel] [PATCH] vvfat: add a label option Wolfgang Bumiller
  2015-06-18 16:09 ` Stefan Hajnoczi
@ 2015-06-18 21:01 ` Eric Blake
  1 sibling, 0 replies; 3+ messages in thread
From: Eric Blake @ 2015-06-18 21:01 UTC (permalink / raw)
  To: Wolfgang Bumiller, qemu-devel; +Cc: Kevin Wolf, Stefan Hajnoczi

[-- Attachment #1: Type: text/plain, Size: 1127 bytes --]

On 06/18/2015 08:08 AM, Wolfgang Bumiller wrote:
> Till now the vvfat filesystem's label was hardcoded to be

s/Till/Until/

> "QEMU VVFAT", now you can pass a file.label=labelname option
> to the -drive to change it.
> 
> Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
> ---
>  block/vvfat.c        | 25 ++++++++++++++++++++++---
>  qapi/block-core.json |  3 ++-
>  2 files changed, 24 insertions(+), 4 deletions(-)
> 

> +++ b/qapi/block-core.json
> @@ -1453,13 +1453,14 @@
>  # @fat-type:    #optional FAT type: 12, 16 or 32
>  # @floppy:      #optional whether to export a floppy image (true) or
>  #               partitioned hard disk (false; default)
> +# @label:       #optional override default label

Missing '(since 2.4)', and also a description of the default text, as
well as the fact that the text is limited to 11 bytes.  Not sure if it
is also worth mentioning that shorter strings padded with trailing
spaces to the proper length.

Otherwise looks reasonable.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-06-18 21:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-18 14:08 [Qemu-devel] [PATCH] vvfat: add a label option Wolfgang Bumiller
2015-06-18 16:09 ` Stefan Hajnoczi
2015-06-18 21:01 ` Eric Blake

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.