From: Naphtali Sprei <nsprei@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] Pass the drive's readonly attribute to the guest OS
Date: Wed, 14 Oct 2009 17:52:29 +0200 [thread overview]
Message-ID: <4AD5F3BD.2040402@redhat.com> (raw)
Hi,
as a preliminary step for adding read only flag for the -drive command, I've added code to pass
the (existing) read only attribute of the drive to the guest OS (if it bother to ask).
I've added for virtio and for scsi.
Verified it already works for floppy.
Searched like mad (in linux sources) for same read only/write protect attribute for ide, but all I found was only for ide-floppy.
I assume it's not supported in ide drives. Please correct me if I'm wrong.
I don't know about the other interface types for the drive command: sd, mtd, floppy, pflash. Where is usb ??
Will be happy to add those, too, if applicable. Please advise.
I'm planning to investigate where qemu should check the read only attribute before exeuting any write command
to drives, would be sent in a different patch.
Naphtali
Signed-off-by: Naphtali Sprei <nsprei@redhat.com>
---
hw/scsi-disk.c | 3 ++-
hw/virtio-blk.c | 3 +++
2 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 3940726..e4511fb 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -631,7 +631,8 @@ static int32_t scsi_send_command(SCSIDevice *d, uint32_t tag,
memset(p, 0, 4);
outbuf[1] = 0; /* Default media type. */
outbuf[3] = 0; /* Block descriptor length. */
- if (bdrv_get_type_hint(s->dinfo->bdrv) == BDRV_TYPE_CDROM) {
+ if (bdrv_get_type_hint(s->dinfo->bdrv) == BDRV_TYPE_CDROM ||
+ bdrv_is_read_only(s->dinfo->bdrv)) {
outbuf[2] = 0x80; /* Readonly. */
}
p += 4;
diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index 2630b99..e6df9f2 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -444,6 +444,9 @@ static uint32_t virtio_blk_get_features(VirtIODevice *vdev)
#endif
if (strcmp(s->serial_str, "0"))
features |= 1 << VIRTIO_BLK_F_IDENTIFY;
+
+ if (bdrv_is_read_only(s->bs))
+ features |= 1 << VIRTIO_BLK_F_RO;
return features;
}
--
1.6.3.3
next reply other threads:[~2009-10-14 15:52 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-14 15:52 Naphtali Sprei [this message]
2009-10-14 15:57 ` [Qemu-devel] [PATCH] Pass the drive's readonly attribute to the guest OS Gerd Hoffmann
2009-10-14 15:59 ` Naphtali Sprei
2009-10-14 16:07 ` Gerd Hoffmann
2009-10-14 16:32 ` Naphtali Sprei
2009-10-14 16:40 ` Naphtali Sprei
2009-10-15 9:36 ` Kevin Wolf
2009-10-15 9:43 ` Gleb Natapov
2009-10-15 9:50 ` Kevin Wolf
2009-10-15 9:54 ` Gleb Natapov
2009-10-15 9:55 ` Kevin Wolf
2009-10-15 10:01 ` Gleb Natapov
2009-10-15 10:05 ` Kevin Wolf
2009-10-15 10:11 ` Gleb Natapov
2009-10-15 10:18 ` Kevin Wolf
-- strict thread matches above, loose matches on Subject: below --
2009-10-29 9:42 Naphtali Sprei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AD5F3BD.2040402@redhat.com \
--to=nsprei@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).