mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
splice: adjust balance_dirty_pages_ratelimited() call
As we have potentially dirtied more than 1 page, we should indicate as such to the dirty page balancing. So call balance_dirty_pages_ratelimited_nr() and pass in the approximate number of pages we dirtied. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
22b1a9203e
commit
17ee4f49ab
1 changed files with 8 additions and 2 deletions
10
fs/splice.c
10
fs/splice.c
|
@ -811,7 +811,10 @@ generic_file_splice_write_nolock(struct pipe_inode_info *pipe, struct file *out,
|
||||||
|
|
||||||
ret = __splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_file);
|
ret = __splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_file);
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
|
unsigned long nr_pages;
|
||||||
|
|
||||||
*ppos += ret;
|
*ppos += ret;
|
||||||
|
nr_pages = (ret + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If file or inode is SYNC and we actually wrote some data,
|
* If file or inode is SYNC and we actually wrote some data,
|
||||||
|
@ -824,7 +827,7 @@ generic_file_splice_write_nolock(struct pipe_inode_info *pipe, struct file *out,
|
||||||
if (err)
|
if (err)
|
||||||
ret = err;
|
ret = err;
|
||||||
}
|
}
|
||||||
balance_dirty_pages_ratelimited(mapping);
|
balance_dirty_pages_ratelimited_nr(mapping, nr_pages);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -863,7 +866,10 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
|
||||||
|
|
||||||
ret = splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_file);
|
ret = splice_from_pipe(pipe, out, ppos, len, flags, pipe_to_file);
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
|
unsigned long nr_pages;
|
||||||
|
|
||||||
*ppos += ret;
|
*ppos += ret;
|
||||||
|
nr_pages = (ret + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If file or inode is SYNC and we actually wrote some data,
|
* If file or inode is SYNC and we actually wrote some data,
|
||||||
|
@ -878,7 +884,7 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
|
||||||
if (err)
|
if (err)
|
||||||
ret = err;
|
ret = err;
|
||||||
}
|
}
|
||||||
balance_dirty_pages_ratelimited(mapping);
|
balance_dirty_pages_ratelimited_nr(mapping, nr_pages);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in a new issue