diff options
author | Mark Johnston <[email protected]> | 2024-10-13 16:17:08 +0000 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2024-11-13 07:25:39 -0800 |
commit | 178682506f92e39a8f6f1de800a471ab9c7bd848 (patch) | |
tree | 6e72a1d4c5ecbb90aa56ea27aaddcb50bafa6863 /module/zcommon/cityhash.c | |
parent | 25eb538778383eb4cc80fb1627ef5efe678a7fae (diff) |
Grab the rangelock unconditionally in zfs_getpages()
As a deadlock avoidance measure, zfs_getpages() would only try to
acquire a rangelock, falling back to a single-page read if this was not
possible. However, this is incompatible with direct I/O.
Instead, release the busy lock before trying to acquire the rangelock in
blocking mode. This means that it's possible for the page to be
replaced, so we have to re-lookup.
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Brian Atkinson <[email protected]>
Signed-off-by: Mark Johnston <[email protected]>
Closes #16643
Diffstat (limited to 'module/zcommon/cityhash.c')
0 files changed, 0 insertions, 0 deletions