diff options
author | Brian Behlendorf <[email protected]> | 2014-08-04 13:30:20 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2014-08-11 16:11:43 -0700 |
commit | 0a50679ce9eb8ded7bf20685e9d32724ded9cb8d (patch) | |
tree | 0087b2570d24eb85e710051c4c3721bc22469069 /module/zfs/zfs_znode.c | |
parent | 4dd18932ba4cfdcf9b16609f6a80c2d6c239cb15 (diff) |
Add zfs_iput_async() interface
Handle all iputs in zfs_purgedir() and zfs_inode_destroy()
asynchronously to prevent deadlocks. When the iputs are allowed
to run synchronously in the destroy call path deadlocks between
xattr directory inodes and their parent file inodes are possible.
Signed-off-by: Brian Behlendorf <[email protected]>
Signed-off-by: Richard Yao <[email protected]>
Closes #457
Diffstat (limited to 'module/zfs/zfs_znode.c')
-rw-r--r-- | module/zfs/zfs_znode.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/module/zfs/zfs_znode.c b/module/zfs/zfs_znode.c index 4403e3289..5fcb9e930 100644 --- a/module/zfs/zfs_znode.c +++ b/module/zfs/zfs_znode.c @@ -292,7 +292,7 @@ zfs_inode_destroy(struct inode *ip) } if (zp->z_xattr_parent) { - iput(ZTOI(zp->z_xattr_parent)); + zfs_iput_async(ZTOI(zp->z_xattr_parent)); zp->z_xattr_parent = NULL; } |