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: Josef Bacik <josef@redhat.com>
This commit is contained in:
parent
f104d04437
commit
877da17430
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue