From b760a59d212007cbe0276d6027fb24809f1330d9 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Tue, 5 Nov 2013 14:09:16 +0100 Subject: [PATCH 63/87] blockdev: fix cdrom read_only flag RH-Author: Kevin Wolf Message-id: <1383660558-32096-23-git-send-email-kwolf@redhat.com> Patchwork-id: 55401 O-Subject: [RHEL-7.0 qemu-kvm PATCH 22/24] blockdev: fix cdrom read_only flag Bugzilla: 978402 RH-Acked-by: Fam Zheng RH-Acked-by: Max Reitz RH-Acked-by: Laszlo Ersek From: Fam Zheng Since 0ebd24e0, cdrom doesn't have read-only on by default, which will error out when using an read only image. Fix it by setting the default value when parsing opts. Reported-by: Edivaldo de Araujo Pereira Signed-off-by: Fam Zheng Reviewed-by: Kevin Wolf Signed-off-by: Stefan Hajnoczi (cherry picked from commit a7fdbcf0e6e52d935ebff6d849fe4b5473e5860d) Signed-off-by: Kevin Wolf --- blockdev.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) Signed-off-by: Miroslav Rezanina --- blockdev.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/blockdev.c b/blockdev.c index a248480..a9c5d32 100644 --- a/blockdev.c +++ b/blockdev.c @@ -626,7 +626,8 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type) int cyls, heads, secs, translation; int max_devs, bus_id, unit_id, index; const char *devaddr; - bool read_only, copy_on_read; + bool read_only = false; + bool copy_on_read; Error *local_err = NULL; /* Change legacy command line options into QMP ones */ @@ -691,7 +692,7 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type) media = MEDIA_DISK; } else if (!strcmp(value, "cdrom")) { media = MEDIA_CDROM; - qdict_put(bs_opts, "read-only", qstring_from_str("on")); + read_only = true; } else { error_report("'%s' invalid media", value); goto fail; @@ -699,7 +700,7 @@ DriveInfo *drive_init(QemuOpts *all_opts, BlockInterfaceType block_default_type) } /* copy-on-read is disabled with a warning for read-only devices */ - read_only = qemu_opt_get_bool(legacy_opts, "read-only", false); + read_only |= qemu_opt_get_bool(legacy_opts, "read-only", false); copy_on_read = qemu_opt_get_bool(legacy_opts, "copy-on-read", false); if (read_only && copy_on_read) { -- 1.7.1