Files
mirror_zfs/module/zfs
Alexander Motin 4036b8d027 Refactor dbuf_read() for safer decryption
In dbuf_read_verify_dnode_crypt():
 - We don't need original dbuf locked there. Instead take a lock
on a dnode dbuf, that is actually manipulated.
 - Block decryption for a dnode dbuf if it is currently being
written.  ARC hash lock does not protect anonymous buffers, so
arc_untransform() is unsafe when used on buffers being written,
that may happen in case of encrypted dnode buffers, since they
are not copied by dbuf_dirty()/dbuf_hold_copy().

In dbuf_read():
 - If the buffer is in flight, recheck its compression/encryption
status after it is cached, since it may need arc_untransform().

Tested-by: Rich Ercolani <rincebrain@gmail.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by:	Alexander Motin <mav@FreeBSD.org>
Sponsored by:	iXsystems, Inc.
Closes #16104
2024-04-22 11:41:03 -07:00
..
2024-03-25 16:50:35 -07:00
2022-03-15 15:13:42 -07:00
2022-03-15 15:13:42 -07:00
2023-01-10 13:39:22 -08:00
2024-04-09 16:23:19 -07:00
2023-09-28 14:10:07 -07:00
2023-03-14 15:25:50 -07:00
2023-03-14 15:59:58 -07:00
2023-06-09 10:12:52 -07:00
2022-03-15 15:13:42 -07:00
2022-01-07 10:36:49 -08:00
2022-01-12 16:14:36 -08:00
2024-04-09 16:23:19 -07:00
2023-11-17 13:28:32 -08:00
2024-04-09 16:23:19 -07:00
2019-06-19 09:48:12 -07:00
2023-11-07 12:11:48 -08:00
2022-03-15 15:13:42 -07:00
2023-11-08 10:19:41 -08:00
2024-04-22 09:42:38 -07:00
2024-04-22 09:42:38 -07:00
2023-06-27 09:09:48 -07:00
2024-04-22 09:42:38 -07:00
2024-04-22 09:42:38 -07:00
2024-04-22 09:42:38 -07:00
2023-03-14 15:25:50 -07:00
2023-03-14 15:25:50 -07:00
2022-09-02 13:31:19 -07:00
2023-03-14 15:25:50 -07:00
2024-04-22 09:42:38 -07:00
2024-04-19 16:18:54 -07:00
2022-11-29 09:26:03 -08:00