From fc549c2d784067bf7af2f046e59b5a3ee79cac75 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Thu, 3 Jun 2010 16:22:29 +1000 Subject: [PATCH] --- yaml --- r: 200186 b: refs/heads/master c: 070ecdca54dde9577d2697088e74e45568f48efb h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/xfs/linux-2.6/xfs_aops.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 42f006d061b4..d471e61f885d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 99a4d54620264a614c89597bc5aaab22ec83f89c +refs/heads/master: 070ecdca54dde9577d2697088e74e45568f48efb diff --git a/trunk/fs/xfs/linux-2.6/xfs_aops.c b/trunk/fs/xfs/linux-2.6/xfs_aops.c index 089eaca860b4..a0fa3bf0d1bb 100644 --- a/trunk/fs/xfs/linux-2.6/xfs_aops.c +++ b/trunk/fs/xfs/linux-2.6/xfs_aops.c @@ -1332,6 +1332,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