aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/fs/xfs/xfs_bmap_util.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2014-07-15 07:08:10 +1000
committerDave Chinner <david@fromorbit.com>2014-07-15 07:08:10 +1000
commitaa182e64f16fc29a4984c2d79191b161888bbd9b (patch)
tree248089d2be2a62bcd08ebdf319882dfb1e9dfd18 /fs/xfs/xfs_bmap_util.c
parentLinux 3.16-rc2 (diff)
downloadwireguard-linux-aa182e64f16fc29a4984c2d79191b161888bbd9b.tar.xz
wireguard-linux-aa182e64f16fc29a4984c2d79191b161888bbd9b.zip
Revert "xfs: block allocation work needs to be kswapd aware"
This reverts commit 1f6d64829db78a7e1d63e15c9f48f0a5d2b5a679. This commit resulted in regressions in performance in low memory situations where kswapd was doing writeback of delayed allocation blocks. It resulted in significant parallelism of the kswapd work and with the special kswapd flags meant that hundreds of active allocation could dip into kswapd specific memory reserves and avoid being throttled. This cause a large amount of performance variation, as well as random OOM-killer invocations that didn't previously exist. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_bmap_util.c')
-rw-r--r--fs/xfs/xfs_bmap_util.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index 703b3ec1796c..057f671811d6 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -258,23 +258,14 @@ xfs_bmapi_allocate_worker(
struct xfs_bmalloca *args = container_of(work,
struct xfs_bmalloca, work);
unsigned long pflags;
- unsigned long new_pflags = PF_FSTRANS;
- /*
- * we are in a transaction context here, but may also be doing work
- * in kswapd context, and hence we may need to inherit that state
- * temporarily to ensure that we don't block waiting for memory reclaim
- * in any way.
- */
- if (args->kswapd)
- new_pflags |= PF_MEMALLOC | PF_SWAPWRITE | PF_KSWAPD;
-
- current_set_flags_nested(&pflags, new_pflags);
+ /* we are in a transaction context here */
+ current_set_flags_nested(&pflags, PF_FSTRANS);
args->result = __xfs_bmapi_allocate(args);
complete(args->done);
- current_restore_flags_nested(&pflags, new_pflags);
+ current_restore_flags_nested(&pflags, PF_FSTRANS);
}
/*
@@ -293,7 +284,6 @@ xfs_bmapi_allocate(
args->done = &done;
- args->kswapd = current_is_kswapd();
INIT_WORK_ONSTACK(&args->work, xfs_bmapi_allocate_worker);
queue_work(xfs_alloc_wq, &args->work);
wait_for_completion(&done);