|
@@ -1168,6 +1168,7 @@ xfs_setup_inode(
|
|
|
struct xfs_inode *ip)
|
|
|
{
|
|
|
struct inode *inode = &ip->i_vnode;
|
|
|
+ gfp_t gfp_mask;
|
|
|
|
|
|
inode->i_ino = ip->i_ino;
|
|
|
inode->i_state = I_NEW;
|
|
@@ -1229,6 +1230,14 @@ xfs_setup_inode(
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ /*
|
|
|
+ * Ensure all page cache allocations are done from GFP_NOFS context to
|
|
|
+ * prevent direct reclaim recursion back into the filesystem and blowing
|
|
|
+ * stacks or deadlocking.
|
|
|
+ */
|
|
|
+ gfp_mask = mapping_gfp_mask(inode->i_mapping);
|
|
|
+ mapping_set_gfp_mask(inode->i_mapping, (gfp_mask & ~(__GFP_FS)));
|
|
|
+
|
|
|
/*
|
|
|
* If there is no attribute fork no ACL can exist on this inode,
|
|
|
* and it can't have any file capabilities attached to it either.
|