qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] file-posix: Clean up and fix zoned checks
@ 2023-08-24 15:53 Hanna Czenczek
  2023-08-24 15:53 ` [PATCH 1/5] file-posix: Clear bs->bl.zoned on error Hanna Czenczek
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Hanna Czenczek @ 2023-08-24 15:53 UTC (permalink / raw)
  To: qemu-block
  Cc: qemu-devel, Hanna Czenczek, Kevin Wolf, Stefan Hajnoczi, Sam Li

Hi,

As presented in [1] there is a bug in the zone code in raw_co_prw(),
specifically we don’t check whether there actually is zone information
before running code that assumes there is (and thus we run into a
division by zero).  This has now also been reported in [2].

I believe the solution [1] is incomplete, though, which is why I’m
sending this separate series: I don’t think checking bs->wps and/or
bs->bl.zone_size to determine whether there is zone information is
right; for example, we do not have raw_refresh_zoned_limits() clear
those values if on a refresh, zone information were to disappear.

It is also weird that we separate checking bs->wps and bs->bl.zone_size
at all; raw_refresh_zoned_limits() seems to intend to ensure that either
we have information with non-NULL bs->wps and non-zero bs->bl.zone_size,
or we don’t.

I think we should have a single flag that tells whether we have valid
information or not, and it looks to me like bs->bl.zoned != BLK_Z_NONE
is the condition that fits best.

Patch 1 ensures that raw_refresh_zoned_limits() will set bs->bl.zoned to
BLK_Z_NONE on error, so that we can actually be sure that this condition
tells us whether we have valid information or not.

Patch 2 unifies all conditional checks for zone information to use
bs->bl.zoned != BLK_Z_NONE.

Patch 3 is the I/O error path fix, which is not really different from
[1].

Patch 4 does a bit of clean-up.

Patch 5 adds a regression test.


[1] https://lists.nongnu.org/archive/html/qemu-devel/2023-06/msg01742.html
[2] https://bugzilla.redhat.com/show_bug.cgi?id=2234374


Hanna Czenczek (5):
  file-posix: Clear bs->bl.zoned on error
  file-posix: Check bs->bl.zoned for zone info
  file-posix: Fix zone update in I/O error path
  file-posix: Simplify raw_co_prw's 'out' zone code
  tests/file-io-error: New test

 block/file-posix.c                         | 42 +++++----
 tests/qemu-iotests/tests/file-io-error     | 99 ++++++++++++++++++++++
 tests/qemu-iotests/tests/file-io-error.out | 31 +++++++
 3 files changed, 150 insertions(+), 22 deletions(-)
 create mode 100755 tests/qemu-iotests/tests/file-io-error
 create mode 100644 tests/qemu-iotests/tests/file-io-error.out

-- 
2.41.0



^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-09-21 18:53 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-24 15:53 [PATCH 0/5] file-posix: Clean up and fix zoned checks Hanna Czenczek
2023-08-24 15:53 ` [PATCH 1/5] file-posix: Clear bs->bl.zoned on error Hanna Czenczek
2023-08-24 16:57   ` Sam Li
2023-08-24 15:53 ` [PATCH 2/5] file-posix: Check bs->bl.zoned for zone info Hanna Czenczek
2023-08-24 16:58   ` Sam Li
2023-08-24 15:53 ` [PATCH 3/5] file-posix: Fix zone update in I/O error path Hanna Czenczek
2023-08-24 17:17   ` Sam Li
2023-08-24 15:53 ` [PATCH 4/5] file-posix: Simplify raw_co_prw's 'out' zone code Hanna Czenczek
2023-08-24 17:18   ` Sam Li
2023-08-24 15:53 ` [PATCH 5/5] tests/file-io-error: New test Hanna Czenczek
2023-08-24 16:53 ` [PATCH 0/5] file-posix: Clean up and fix zoned checks Sam Li
2023-09-21 18:21 ` Michael Tokarev
2023-09-21 18:52   ` Michael Tokarev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).