diff options
author | Brian Behlendorf <[email protected]> | 2015-04-23 10:09:19 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-04-24 09:54:22 -0700 |
commit | a438ff0e85c36c2e31873b3a46d85e5e3593fab9 (patch) | |
tree | 62b1df1bd9e58e265cff5d510b4d26f07982aa0f /module/zfs/zpl_super.c | |
parent | 614e598c88446df9a6e2b59ba8ad0919628935b8 (diff) |
Extend PF_FSTRANS critical regions
Additional testing has shown that the region covered by PF_FSTRANS
needs to be extended to cover the zpl_xattr_security_init() and
init_acl() functions. The zpl_mark_dirty() function can also recurse
and therefore must always be protected.
Signed-off-by: Brian Behlendorf <[email protected]>
Signed-off-by: Chunwei Chen <[email protected]>
Signed-off-by: Richard Yao <[email protected]>
Closes #3331
Diffstat (limited to 'module/zfs/zpl_super.c')
-rw-r--r-- | module/zfs/zpl_super.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/module/zfs/zpl_super.c b/module/zfs/zpl_super.c index 62fcc6cd8..a8d26ec1c 100644 --- a/module/zfs/zpl_super.c +++ b/module/zfs/zpl_super.c @@ -57,13 +57,21 @@ zpl_inode_destroy(struct inode *ip) static void zpl_dirty_inode(struct inode *ip, int flags) { + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); zfs_dirty_inode(ip, flags); + spl_fstrans_unmark(cookie); } #else static void zpl_dirty_inode(struct inode *ip) { + fstrans_cookie_t cookie; + + cookie = spl_fstrans_mark(); zfs_dirty_inode(ip, 0); + spl_fstrans_unmark(cookie); } #endif /* HAVE_DIRTY_INODE_WITH_FLAGS */ |