|
@@ -1167,6 +1167,8 @@ static noinline ssize_t __btrfs_buffered_write(struct file *file,
|
|
|
nrptrs = min((iov_iter_count(i) + PAGE_CACHE_SIZE - 1) /
|
|
|
PAGE_CACHE_SIZE, PAGE_CACHE_SIZE /
|
|
|
(sizeof(struct page *)));
|
|
|
+ nrptrs = min(nrptrs, current->nr_dirtied_pause - current->nr_dirtied);
|
|
|
+ nrptrs = max(nrptrs, 8);
|
|
|
pages = kmalloc(nrptrs * sizeof(struct page *), GFP_KERNEL);
|
|
|
if (!pages)
|
|
|
return -ENOMEM;
|