mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
zio: rename io_reexecute as io_post; use it for the direct IO checksum error flag
We're not supposed to modify someone else's io_flags, so we need another way to propagate DIO_CHKSUM_ERR. If we squint, we can see that io_reexecute is really just recording exceptional events that a parent (or its parents) will need to do something about. It just happens that the only things we've had historically are two forms of reexecution: now or later (suspend). So, rename it to io_post, as in, post-IO info/events/actions. And now we have a few spare bits for other conditions. Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <rob.norris@klarasystems.com> Closes #17507
This commit is contained in:
@@ -2691,7 +2691,7 @@ raidz_checksum_verify(zio_t *zio)
|
||||
*/
|
||||
if (zio->io_flags & ZIO_FLAG_DIO_READ && ret == ECKSUM) {
|
||||
zio->io_error = ret;
|
||||
zio->io_flags |= ZIO_FLAG_DIO_CHKSUM_ERR;
|
||||
zio->io_post |= ZIO_POST_DIO_CHKSUM_ERR;
|
||||
zio_dio_chksum_verify_error_report(zio);
|
||||
zio_checksum_verified(zio);
|
||||
return (0);
|
||||
@@ -3048,7 +3048,7 @@ raidz_reconstruct(zio_t *zio, int *ltgts, int ntgts, int nparity)
|
||||
|
||||
/* Check for success */
|
||||
if (raidz_checksum_verify(zio) == 0) {
|
||||
if (zio->io_flags & ZIO_FLAG_DIO_CHKSUM_ERR)
|
||||
if (zio->io_post & ZIO_POST_DIO_CHKSUM_ERR)
|
||||
return (0);
|
||||
|
||||
/* Reconstruction succeeded - report errors */
|
||||
@@ -3514,7 +3514,7 @@ vdev_raidz_io_done(zio_t *zio)
|
||||
}
|
||||
|
||||
if (raidz_checksum_verify(zio) == 0) {
|
||||
if (zio->io_flags & ZIO_FLAG_DIO_CHKSUM_ERR)
|
||||
if (zio->io_post & ZIO_POST_DIO_CHKSUM_ERR)
|
||||
goto done;
|
||||
|
||||
for (int i = 0; i < rm->rm_nrows; i++) {
|
||||
|
||||
Reference in New Issue
Block a user