72 lines
2.3 KiB
Diff
72 lines
2.3 KiB
Diff
|
From fbf511a9f7272815fc6d7414735049689186c750 Mon Sep 17 00:00:00 2001
|
||
|
From: Hanna Czenczek <hreitz@redhat.com>
|
||
|
Date: Thu, 24 Aug 2023 17:53:43 +0200
|
||
|
Subject: [PATCH 12/13] file-posix: Simplify raw_co_prw's 'out' zone code
|
||
|
|
||
|
RH-Author: Hanna Czenczek <hreitz@redhat.com>
|
||
|
RH-MergeRequest: 202: file-posix: Fix zone update in I/O error path
|
||
|
RH-Jira: RHEL-7360
|
||
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
||
|
RH-Commit: [4/5] c0b37cc9ff308de300e45d1a10942d11fbabea26 (hreitz/qemu-kvm-c-9-s)
|
||
|
|
||
|
We duplicate the same condition three times here, pull it out to the top
|
||
|
level.
|
||
|
|
||
|
Signed-off-by: Hanna Czenczek <hreitz@redhat.com>
|
||
|
Message-Id: <20230824155345.109765-5-hreitz@redhat.com>
|
||
|
Reviewed-by: Sam Li <faithilikerun@gmail.com>
|
||
|
(cherry picked from commit d31b50a15dd25a560749b25fc40b6484fd1a57b7)
|
||
|
|
||
|
Downstream conflict with the downstream change in HEAD^^ (conflicting
|
||
|
code is removed).
|
||
|
|
||
|
Signed-off-by: Hanna Czenczek <hreitz@redhat.com>
|
||
|
---
|
||
|
block/file-posix.c | 18 +++++-------------
|
||
|
1 file changed, 5 insertions(+), 13 deletions(-)
|
||
|
|
||
|
diff --git a/block/file-posix.c b/block/file-posix.c
|
||
|
index b9d5e4741b..aa89789737 100644
|
||
|
--- a/block/file-posix.c
|
||
|
+++ b/block/file-posix.c
|
||
|
@@ -2506,11 +2506,10 @@ static int coroutine_fn raw_co_prw(BlockDriverState *bs, uint64_t offset,
|
||
|
|
||
|
out:
|
||
|
#if defined(CONFIG_BLKZONED)
|
||
|
-{
|
||
|
- BlockZoneWps *wps = bs->wps;
|
||
|
- if (ret == 0) {
|
||
|
- if ((type & (QEMU_AIO_WRITE | QEMU_AIO_ZONE_APPEND)) &&
|
||
|
- bs->bl.zoned != BLK_Z_NONE) {
|
||
|
+ if ((type & (QEMU_AIO_WRITE | QEMU_AIO_ZONE_APPEND)) &&
|
||
|
+ bs->bl.zoned != BLK_Z_NONE) {
|
||
|
+ BlockZoneWps *wps = bs->wps;
|
||
|
+ if (ret == 0) {
|
||
|
uint64_t *wp = &wps->wp[offset / bs->bl.zone_size];
|
||
|
if (!BDRV_ZT_IS_CONV(*wp)) {
|
||
|
if (type & QEMU_AIO_ZONE_APPEND) {
|
||
|
@@ -2523,19 +2522,12 @@ out:
|
||
|
*wp = offset + bytes;
|
||
|
}
|
||
|
}
|
||
|
- }
|
||
|
- } else {
|
||
|
- if ((type & (QEMU_AIO_WRITE | QEMU_AIO_ZONE_APPEND)) &&
|
||
|
- bs->bl.zoned != BLK_Z_NONE) {
|
||
|
+ } else {
|
||
|
update_zones_wp(bs, s->fd, 0, 1);
|
||
|
}
|
||
|
- }
|
||
|
|
||
|
- if ((type & (QEMU_AIO_WRITE | QEMU_AIO_ZONE_APPEND)) &&
|
||
|
- bs->bl.zoned != BLK_Z_NONE) {
|
||
|
qemu_co_mutex_unlock(&wps->colock);
|
||
|
}
|
||
|
-}
|
||
|
#endif
|
||
|
return ret;
|
||
|
}
|
||
|
--
|
||
|
2.39.3
|
||
|
|