qemu/hw/usb
Kevin Wolf 86b1cf3227 block: Separate blk_is_writable() and blk_supports_write_perm()
Currently, blk_is_read_only() tells whether a given BlockBackend can
only be used in read-only mode because its root node is read-only. Some
callers actually try to answer a slightly different question: Is the
BlockBackend configured to be writable, by taking write permissions on
the root node?

This can differ, for example, for CD-ROM devices which don't take write
permissions, but may be backed by a writable image file. scsi-cd allows
write requests to the drive if blk_is_read_only() returns false.
However, the write request will immediately run into an assertion
failure because the write permission is missing.

This patch introduces separate functions for both questions.
blk_supports_write_perm() answers the question whether the block
node/image file can support writable devices, whereas blk_is_writable()
tells whether the BlockBackend is currently configured to be writable.

All calls of blk_is_read_only() are converted to one of the two new
functions.

Fixes: https://bugs.launchpad.net/bugs/1906693
Cc: qemu-stable@nongnu.org
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20210118123448.307825-2-kwolf@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2021-01-27 20:45:20 +01:00
..
bus.c usb: add pcap support. 2021-01-22 14:51:35 +01:00
ccid-card-emulated.c hw/usb: Use lock guard macros 2020-09-28 13:13:58 +02:00
ccid-card-passthru.c hw/usb: Fix bad printf format specifiers 2021-01-22 14:51:35 +01:00
ccid.h Use OBJECT_DECLARE_TYPE when possible 2020-09-18 14:12:32 -04:00
chipidea.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
combined-packet.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
core.c usb: add pcap support. 2021-01-22 14:51:35 +01:00
desc-msos.c
desc.c
desc.h
dev-audio.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-hid.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-hub.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
dev-mtp.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-network.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
dev-serial.c qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
dev-smartcard-reader.c hw/usb: Fix bad printf format specifiers 2021-01-22 14:51:35 +01:00
dev-storage.c block: Separate blk_is_writable() and blk_supports_write_perm() 2021-01-27 20:45:20 +01:00
dev-uas.c hw/usb/dev-uas: Report command additional adb length as unsupported 2021-01-22 14:51:35 +01:00
dev-wacom.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-dwc2.c hw/usb/hcd-dwc2: fix divide-by-zero in dwc2_handle_packet() 2020-10-19 09:17:21 +02:00
hcd-dwc2.h Use OBJECT_DECLARE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-dwc3.c usb: Add DWC3 model 2020-12-15 12:04:30 +00:00
hcd-ehci-pci.c qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
hcd-ehci-sysbus.c hw/arm/npcm7xx: Add EHCI and OHCI controllers 2020-10-27 11:10:21 +00:00
hcd-ehci.c hw/usb: Fix bad printf format specifiers 2021-01-22 14:51:35 +01:00
hcd-ehci.h hw/arm/npcm7xx: Add EHCI and OHCI controllers 2020-10-27 11:10:21 +00:00
hcd-musb.c exec/cpu-common: Move MUSB specific typedefs to 'hw/usb/hcd-musb.h' 2020-06-12 11:20:15 -04:00
hcd-ohci-pci.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
hcd-ohci.c usb: Fix Lesser GPL version number 2020-11-15 16:40:48 +01:00
hcd-ohci.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
hcd-uhci.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
hcd-xhci-nec.c usb: Fix Lesser GPL version number 2020-11-15 16:40:48 +01:00
hcd-xhci-pci.c hw/usb: Convert to qdev_realize() 2021-01-22 14:51:35 +01:00
hcd-xhci-pci.h usb: Fix Lesser GPL version number 2020-11-15 16:40:48 +01:00
hcd-xhci-sysbus.c hw/usb: Convert to qdev_realize() 2021-01-22 14:51:35 +01:00
hcd-xhci-sysbus.h usb/xhci: add include/hw/usb/xhci.h header file 2020-10-21 11:36:19 +02:00
hcd-xhci.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
hcd-xhci.h hw/usb/hcd-xhci: Fix extraneous format-truncation error on 32-bit hosts 2021-01-22 14:51:35 +01:00
host-libusb.c usb-host: map LIBUSB_SPEED_SUPER_PLUS to USB_SPEED_SUPER 2021-01-22 14:51:35 +01:00
host-stub.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
host.h
imx-usb-phy.c hw/usb: Add basic i.MX USB Phy support 2020-03-17 11:23:14 +00:00
Kconfig usb: xlnx-usb-subsystem: Add xilinx usb subsystem 2020-12-15 12:04:30 +00:00
libhw.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
meson.build usb: add pcap support. 2021-01-22 14:51:35 +01:00
pcap.c usb: add pcap support. 2021-01-22 14:51:35 +01:00
quirks-ftdi-ids.h
quirks-pl2303-ids.h
quirks.c hw/usb/quirks: Use smaller types to reduce .rodata by 10KiB 2020-03-16 23:02:25 +01:00
quirks.h hw/usb/quirks: Use smaller types to reduce .rodata by 10KiB 2020-03-16 23:02:25 +01:00
redirect.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
trace-events usb-storage: switch trace events 2020-11-16 09:11:21 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
tusb6010.c Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
u2f-emulated.c usb: fix u2f build 2020-09-21 09:44:54 +02:00
u2f-passthru.c util: rename qemu_open() to qemu_open_old() 2020-09-16 10:33:48 +01:00
u2f.c hw/usb: Add U2F key base class implementation 2020-08-31 08:10:47 +02:00
u2f.h hw/usb: Add U2F key base class 2020-08-31 08:10:47 +02:00
xen-usb.c xen: Fix and improve handling of device_add usb-host errors 2020-05-27 07:45:17 +02:00
xlnx-usb-subsystem.c usb: xlnx-usb-subsystem: Add xilinx usb subsystem 2020-12-15 12:04:30 +00:00
xlnx-versal-usb2-ctrl-regs.c usb: Add versal-usb2-ctrl-regs module 2020-12-15 12:04:30 +00:00