mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 19:51:31 -04:00
writeback: separate starting of sync vs opportunistic writeback
bdi_start_writeback() is currently split into two paths, one for WB_SYNC_NONE and one for WB_SYNC_ALL. Add bdi_sync_writeback() for WB_SYNC_ALL writeback and let bdi_start_writeback() handle only WB_SYNC_NONE. Push down the writeback_control allocation and only accept the parameters that make sense for each function. This cleans up the API considerably. Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
parent
bcddc3f01c
commit
b6e51316da
5 changed files with 75 additions and 95 deletions
|
|
@ -54,29 +54,15 @@
|
|||
* @nr_to_write: how many dirty pages to write-back
|
||||
*
|
||||
* This function shrinks UBIFS liability by means of writing back some amount
|
||||
* of dirty inodes and their pages. Returns the amount of pages which were
|
||||
* written back. The returned value does not include dirty inodes which were
|
||||
* synchronized.
|
||||
* of dirty inodes and their pages.
|
||||
*
|
||||
* Note, this function synchronizes even VFS inodes which are locked
|
||||
* (@i_mutex) by the caller of the budgeting function, because write-back does
|
||||
* not touch @i_mutex.
|
||||
*/
|
||||
static int shrink_liability(struct ubifs_info *c, int nr_to_write)
|
||||
static void shrink_liability(struct ubifs_info *c, int nr_to_write)
|
||||
{
|
||||
int nr_written;
|
||||
|
||||
nr_written = writeback_inodes_sb(c->vfs_sb);
|
||||
if (!nr_written) {
|
||||
/*
|
||||
* Re-try again but wait on pages/inodes which are being
|
||||
* written-back concurrently (e.g., by pdflush).
|
||||
*/
|
||||
nr_written = sync_inodes_sb(c->vfs_sb);
|
||||
}
|
||||
|
||||
dbg_budg("%d pages were written back", nr_written);
|
||||
return nr_written;
|
||||
writeback_inodes_sb(c->vfs_sb);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue