diff options
author | Paul Dagnelie <[email protected]> | 2021-01-27 21:29:58 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2021-01-28 11:39:13 -0800 |
commit | 43eaef6de817dab3e098488f8e02a11fe57944d0 (patch) | |
tree | 9ebe6bafbcec835720574c2d8276294b35d0f640 /lib/libspl | |
parent | 5bc4c39d70fbb3dd8dfa8a5708573abd8b801a68 (diff) |
Fix zrele race in zrele_async that can cause hang
There is a race condition in zfs_zrele_async when we are checking if
we would be the one to evict an inode. This can lead to a txg sync
deadlock.
Instead of calling into iput directly, we attempt to perform the atomic
decrement ourselves, unless that would set the i_count value to zero.
In that case, we dispatch a call to iput to run later, to prevent a
deadlock from occurring.
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Matthew Ahrens <[email protected]>
Signed-off-by: Paul Dagnelie <[email protected]>
Closes #11527
Closes #11530
Diffstat (limited to 'lib/libspl')
0 files changed, 0 insertions, 0 deletions