Paul Dagnelie 2921ad6cba
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 <behlendorf1@llnl.gov>
Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #11527 
Closes #11530
2021-01-27 21:29:58 -08:00
..
2021-01-26 16:12:10 -08:00
2021-01-20 21:27:30 -08:00
2021-01-26 16:12:26 -08:00
2020-09-02 09:42:12 -07:00
2020-06-10 09:24:15 -07:00
2020-10-02 17:44:10 -07:00
2021-01-26 19:36:51 -08:00
2020-06-10 09:24:15 -07:00
2020-08-20 10:30:06 -07:00
2021-01-26 16:12:26 -08:00