diff options
| author | Peter Maydell | 2021-01-28 13:30:30 +0100 |
|---|---|---|
| committer | Peter Maydell | 2021-01-28 13:30:30 +0100 |
| commit | 0bcd12fb1513bad44f05f2d3a8eef2a99b3077b6 (patch) | |
| tree | f3649aab45324e1d448b67a7dc1139edf7919374 /block | |
| parent | Merge remote-tracking branch 'remotes/kraxel/tags/ui-20210127-pull-request' i... (diff) | |
| parent | iotests: rename and move 169 and 199 tests (diff) | |
| download | qemu-0bcd12fb1513bad44f05f2d3a8eef2a99b3077b6.tar.gz qemu-0bcd12fb1513bad44f05f2d3a8eef2a99b3077b6.tar.xz qemu-0bcd12fb1513bad44f05f2d3a8eef2a99b3077b6.zip | |
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Block layer patches:
- Fix crash on write to read-only devices
- iotests: Rewrite 'check' in Python, get rid of 'groups' and allow
non-numeric test case names
# gpg: Signature made Wed 27 Jan 2021 19:56:00 GMT
# gpg: using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg: issuer "kwolf@redhat.com"
# 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:
iotests: rename and move 169 and 199 tests
iotests: rewrite check into python
iotests: add testrunner.py
iotests: add testenv.py
iotests: add findtests.py
iotests: 146: drop extra whitespaces from .out file
virtio-scsi-test: Test writing to scsi-cd device
block: Separate blk_is_writable() and blk_supports_write_perm()
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'block')
| -rw-r--r-- | block/block-backend.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/block/block-backend.c b/block/block-backend.c index ce78d30794..e493f17515 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -1826,17 +1826,30 @@ void blk_error_action(BlockBackend *blk, BlockErrorAction action, } } -bool blk_is_read_only(BlockBackend *blk) +/* + * Returns true if the BlockBackend can support taking write permissions + * (because its root node is not read-only). + */ +bool blk_supports_write_perm(BlockBackend *blk) { BlockDriverState *bs = blk_bs(blk); if (bs) { - return bdrv_is_read_only(bs); + return !bdrv_is_read_only(bs); } else { - return blk->root_state.read_only; + return !blk->root_state.read_only; } } +/* + * Returns true if the BlockBackend can be written to in its current + * configuration (i.e. if write permission have been requested) + */ +bool blk_is_writable(BlockBackend *blk) +{ + return blk->perm & BLK_PERM_WRITE; +} + bool blk_is_sg(BlockBackend *blk) { BlockDriverState *bs = blk_bs(blk); |
