aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2019-07-30 12:25:34 +0100
committerPeter Maydell <peter.maydell@linaro.org>2019-07-30 12:25:35 +0100
commit6e9a6cbe7d56107f5e0d7711905dc19bb4d7e3f0 (patch)
tree88b1ecff0fb3ff9587037f39f734b1970fda7411
parentee9545ed1543020fba52fa5fb8f2b71c63e5389f (diff)
parent7cef3d1290c9d675deff95029ba78e51fb727125 (diff)
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Block layer patches: - scsi-cd: Fix inserting read-only media in empty drive - block/copy-on-read: Fix permissions for inactive node - Test case fixes # gpg: Signature made Tue 30 Jul 2019 12:21:48 BST # gpg: using RSA key 7F09B272C88F2FD6 # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full] # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74 56FE 7F09 B272 C88F 2FD6 * remotes/kevin/tags/for-upstream: scsi-cd: Fix inserting read-only media in empty drive block/copy-on-read: Fix permissions for inactive node Fixes: add read-zeroes to 051.out tests/multiboot: Fix load address of test kernels Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--block/copy-on-read.c16
-rw-r--r--hw/scsi/scsi-disk.c10
-rw-r--r--tests/multiboot/link.ld6
-rw-r--r--tests/qemu-iotests/051.out10
4 files changed, 23 insertions, 19 deletions
diff --git a/block/copy-on-read.c b/block/copy-on-read.c
index 22f24fd0db..6631f30205 100644
--- a/block/copy-on-read.c
+++ b/block/copy-on-read.c
@@ -56,16 +56,14 @@ static void cor_child_perm(BlockDriverState *bs, BdrvChild *c,
uint64_t perm, uint64_t shared,
uint64_t *nperm, uint64_t *nshared)
{
- if (c == NULL) {
- *nperm = (perm & PERM_PASSTHROUGH) | BLK_PERM_WRITE_UNCHANGED;
- *nshared = (shared & PERM_PASSTHROUGH) | PERM_UNCHANGED;
- return;
- }
+ *nperm = perm & PERM_PASSTHROUGH;
+ *nshared = (shared & PERM_PASSTHROUGH) | PERM_UNCHANGED;
- *nperm = (perm & PERM_PASSTHROUGH) |
- (c->perm & PERM_UNCHANGED);
- *nshared = (shared & PERM_PASSTHROUGH) |
- (c->shared_perm & PERM_UNCHANGED);
+ /* We must not request write permissions for an inactive node, the child
+ * cannot provide it. */
+ if (!(bs->open_flags & BDRV_O_INACTIVE)) {
+ *nperm |= BLK_PERM_WRITE_UNCHANGED;
+ }
}
diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c
index 8e95e3e38d..af3e622dc5 100644
--- a/hw/scsi/scsi-disk.c
+++ b/hw/scsi/scsi-disk.c
@@ -2318,6 +2318,7 @@ static void scsi_disk_unit_attention_reported(SCSIDevice *dev)
static void scsi_realize(SCSIDevice *dev, Error **errp)
{
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
+ bool read_only;
if (!s->qdev.conf.blk) {
error_setg(errp, "drive property not set");
@@ -2351,8 +2352,13 @@ static void scsi_realize(SCSIDevice *dev, Error **errp)
return;
}
}
- if (!blkconf_apply_backend_options(&dev->conf,
- blk_is_read_only(s->qdev.conf.blk),
+
+ read_only = blk_is_read_only(s->qdev.conf.blk);
+ if (dev->type == TYPE_ROM) {
+ read_only = true;
+ }
+
+ if (!blkconf_apply_backend_options(&dev->conf, read_only,
dev->type == TYPE_DISK, errp)) {
return;
}
diff --git a/tests/multiboot/link.ld b/tests/multiboot/link.ld
index 3d49b58c60..2eafcffc4f 100644
--- a/tests/multiboot/link.ld
+++ b/tests/multiboot/link.ld
@@ -3,14 +3,14 @@ ENTRY(_start)
SECTIONS
{
. = 0x100000;
- .text : {
+ .text : AT(ADDR(.text)) {
*(multiboot)
*(.text)
}
- .data ALIGN(4096) : {
+ .data ALIGN(4096) : AT(ADDR(.data)) {
*(.data)
}
- .rodata ALIGN(4096) : {
+ .rodata ALIGN(4096) : AT(ADDR(.rodata)) {
*(.rodata)
}
.bss ALIGN(4096) : {
diff --git a/tests/qemu-iotests/051.out b/tests/qemu-iotests/051.out
index 8993835b94..554c5ca90a 100644
--- a/tests/qemu-iotests/051.out
+++ b/tests/qemu-iotests/051.out
@@ -149,23 +149,23 @@ QEMU X.Y.Z monitor - type 'help' for more information
=== Cache modes ===
-Testing: -drive driver=null-co,cache=none
+Testing: -drive driver=null-co,read-zeroes=on,cache=none
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
-Testing: -drive driver=null-co,cache=directsync
+Testing: -drive driver=null-co,read-zeroes=on,cache=directsync
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
-Testing: -drive driver=null-co,cache=writeback
+Testing: -drive driver=null-co,read-zeroes=on,cache=writeback
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
-Testing: -drive driver=null-co,cache=writethrough
+Testing: -drive driver=null-co,read-zeroes=on,cache=writethrough
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit
-Testing: -drive driver=null-co,cache=unsafe
+Testing: -drive driver=null-co,read-zeroes=on,cache=unsafe
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) quit