diff options
author | Alex Elder <aelder@sgi.com> | 2010-06-04 13:22:30 -0500 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-06-04 13:22:30 -0500 |
commit | 1bf7dbfde8fe7ddaa8e2e1b4e0fc41a9fc6aa7a5 (patch) | |
tree | fdb99e686fa40e79cc53f80dfed58e9b548ed4eb /fs/xfs/linux-2.6/xfs_aops.c | |
parent | ad8456361fa19068cf49b50a4f98e41b73c08e76 (diff) | |
parent | f9369729496a0f4c607a4cc1ea4dfeddbbfc505a (diff) |
Merge branch 'master' into for-linus
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 089eaca860b..a0fa3bf0d1b 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c @@ -1333,6 +1333,21 @@ xfs_vm_writepage( trace_xfs_writepage(inode, page, 0); /* + * Refuse to write the page out if we are called from reclaim context. + * + * This is primarily to avoid stack overflows when called from deep + * used stacks in random callers for direct reclaim, but disabling + * reclaim for kswap is a nice side-effect as kswapd causes rather + * suboptimal I/O patters, too. + * + * This should really be done by the core VM, but until that happens + * filesystems like XFS, btrfs and ext4 have to take care of this + * by themselves. + */ + if (current->flags & PF_MEMALLOC) + goto out_fail; + + /* * We need a transaction if: * 1. There are delalloc buffers on the page * 2. The page is uptodate and we have unmapped buffers |