mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-03 10:43:28 +00:00
block: Move read-only check during truncation earlier
No need to start a tracked request that will always fail. The choice to check read-only after bdrv_inc_in_flight() predates 1bc5f09f2e (block: Use tracked request for truncate), but waiting for serializing requests can make the effect more noticeable. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20210609163034.997943-1-eblake@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
2d369d6e6e
commit
97efa8698e
10
block/io.c
10
block/io.c
@ -3392,6 +3392,11 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset, bool exact,
|
||||
return old_size;
|
||||
}
|
||||
|
||||
if (bdrv_is_read_only(bs)) {
|
||||
error_setg(errp, "Image is read-only");
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
if (offset > old_size) {
|
||||
new_bytes = offset - old_size;
|
||||
} else {
|
||||
@ -3408,11 +3413,6 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset, bool exact,
|
||||
if (new_bytes) {
|
||||
bdrv_make_request_serialising(&req, 1);
|
||||
}
|
||||
if (bdrv_is_read_only(bs)) {
|
||||
error_setg(errp, "Image is read-only");
|
||||
ret = -EACCES;
|
||||
goto out;
|
||||
}
|
||||
ret = bdrv_co_write_req_prepare(child, offset - new_bytes, new_bytes, &req,
|
||||
0);
|
||||
if (ret < 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user