diff options
author | Alexander Motin <[email protected]> | 2023-02-13 16:21:53 -0500 |
---|---|---|
committer | GitHub <[email protected]> | 2023-02-13 13:21:53 -0800 |
commit | 87a4dfa561900dafaa446661538faa485af5f17a (patch) | |
tree | d9edee838bd126792c1900eeba09909f170b1bd3 /module/os/linux/zfs | |
parent | 7883ea2234fac0cd976eb2ca0c6b51e7a5da7668 (diff) |
Improve arc_read() error reporting
Debugging reported NULL de-reference panic in dnode_hold_impl() I found
that for certain types of errors arc_read() may only return error code,
but not properly report it via done and pio arguments. Lack of done
calls may result in reference and/or memory leaks in higher level code.
Lack of error reporting via pio may result in unnoticed errors there.
For example, dbuf_read(), where dbuf_read_impl() ignores arc_read()
return, relies completely on the pio mechanism and missed the errors.
This patch makes arc_read() to always call done callback and always
propagate errors to parent zio, if either is provided.
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Brian Atkinson <[email protected]>
Signed-off-by: Alexander Motin <[email protected]>
Sponsored by: iXsystems, Inc.
Closes #14454
Diffstat (limited to 'module/os/linux/zfs')
0 files changed, 0 insertions, 0 deletions