aboutsummaryrefslogtreecommitdiffstats
path: root/module/zfs/zpl_super.c
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2015-04-23 10:09:19 -0700
committerBrian Behlendorf <[email protected]>2015-04-24 09:54:22 -0700
commita438ff0e85c36c2e31873b3a46d85e5e3593fab9 (patch)
tree62b1df1bd9e58e265cff5d510b4d26f07982aa0f /module/zfs/zpl_super.c
parent614e598c88446df9a6e2b59ba8ad0919628935b8 (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.c8
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 */