Commit 877da174 authored by Josef Bacik's avatar Josef Bacik
Browse files

Btrfs: allow shrink_delalloc flush the needed reclaimed pages



Currently we only allow a maximum of 2 megabytes of pages to be flushed at a
time.  This was ok before, but now we have overcommit which will screw us in a
heartbeat if we are quickly filling the disk.  So instead pick either 2
megabytes or the number of pages we need to reclaim to be safe again, which ever
is larger.  Thanks,

Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
parent f104d044
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -3343,7 +3343,7 @@ static int shrink_delalloc(struct btrfs_trans_handle *trans,
	u64 max_reclaim;
	u64 reclaimed = 0;
	long time_left;
	int nr_pages = (2 * 1024 * 1024) >> PAGE_CACHE_SHIFT;
	unsigned long nr_pages = (2 * 1024 * 1024) >> PAGE_CACHE_SHIFT;
	int loops = 0;
	unsigned long progress;

@@ -3366,7 +3366,8 @@ static int shrink_delalloc(struct btrfs_trans_handle *trans,
	}

	max_reclaim = min(reserved, to_reclaim);

	nr_pages = max_t(unsigned long, nr_pages,
			 max_reclaim >> PAGE_CACHE_SHIFT);
	while (loops < 1024) {
		/* have the flusher threads jump in and do some IO */
		smp_mb();