zfs/module
Rob Norris cdaf041d39 zil: ensure flush errors are recieved
Its possible for a hardware failure to occur in a way that the ZIL block
writes appear to succeed, but the flush fails.

Because flush errors were being ignored, the lwb chain would finish with
a zero error code, which would result in zil_commit() returning and thus
fsync() returning success to the caller, even though the data was not
recorded in the ZIL.

If the ZIL is on the main pool (no SLOG device) it would typically
suspend around the same time. If that happened before the txg committed,
then those writes are now totally lost - not on the pool, not in the
ZIL.

zil_lwb_flush_vdevs_done() has the necessary code to deal with this
situation, but zio_flush() would never return failure, so it never saw
it. This just allows flushes to report failure, and now we never miss a
failed ZIL write.

Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
(cherry picked from commit d9db5dccc56b551d0bf66bc9022b6c19a659b7e1)
2023-07-05 13:27:31 +00:00
..
avl Fix various typos 2021-04-07 13:27:11 -07:00
icp Fix functions without a prototype 2022-05-20 10:33:24 -07:00
lua Use fallthrough macro 2021-11-02 09:50:30 -07:00
nvpair Update `checkstyle` workflow env to ubuntu-20.04 2021-12-08 13:27:56 -08:00
os vnops: thread DMU_TX_ASSIGN_CONTINUE to a bunch of vnops 2023-07-05 13:27:30 +00:00
spl Cleanup linux module kbuild files 2020-06-10 09:24:15 -07:00
unicode Update `checkstyle` workflow env to ubuntu-20.04 2021-12-08 13:27:56 -08:00
zcommon Linux 5.16 compat: don't use XSTATE_XSAVE to save FPU state 2022-02-16 17:58:55 -08:00
zfs zil: ensure flush errors are recieved 2023-07-05 13:27:31 +00:00
zstd module: zstd: check we don't leak symbols; regenerate symbol map 2022-05-16 15:48:21 -07:00
.gitignore Cleanup linux module kbuild files 2020-06-10 09:24:15 -07:00
Kbuild.in Add a JSON equivalent to zpool-status(8) 2023-07-05 13:27:30 +00:00
Makefile.bsd Add a JSON equivalent to zpool-status(8) 2023-07-05 13:27:30 +00:00
Makefile.in Add support for $KERNEL_{CC,LD,LLVM} variables 2022-02-16 17:58:55 -08:00