The commit is pushed to "branch-rh7-3.10.0-229.7.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-229.7.2.vz7.6.6 ------> commit fe9db6c5f1e3e58f0ad60caf19c3d9e1a1cca474 Author: Vladimir Davydov <vdavy...@parallels.com> Date: Thu Sep 3 14:10:34 2015 +0400
ve/writeback: revert ub dirty limit related stuff This patch reverts ub dirty limit related hunks brought by the initial commit 2a8b5de95918. None of them actually works, so this patch introduces no functional changes. Dirty set control will be reimplemented in the scope of https://jira.sw.ru/browse/PSBM-33841 Signed-off-by: Vladimir Davydov <vdavy...@parallels.com> --- fs/fs-writeback.c | 39 +++++++-------------------------------- include/linux/writeback.h | 4 ---- mm/page-writeback.c | 4 ---- 3 files changed, 7 insertions(+), 40 deletions(-) diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 66586a4..ac8066b 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -40,7 +40,6 @@ struct wb_writeback_work { long nr_pages; struct super_block *sb; - struct user_beancounter *ub; unsigned long *older_than_this; enum writeback_sync_modes sync_mode; unsigned int tagged_writepages:1; @@ -130,8 +129,8 @@ out_unlock: } static void -__bdi_start_writeback(struct backing_dev_info *bdi, - long nr_pages, bool range_cyclic, enum wb_reason reason) +__bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages, + bool range_cyclic, enum wb_reason reason) { struct wb_writeback_work *work; @@ -150,7 +149,6 @@ __bdi_start_writeback(struct backing_dev_info *bdi, work->nr_pages = nr_pages; work->range_cyclic = range_cyclic; work->reason = reason; - work->ub = NULL; bdi_queue_work(bdi, work); } @@ -673,7 +671,6 @@ static long writeback_sb_inodes(struct super_block *sb, .range_cyclic = work->range_cyclic, .range_start = 0, .range_end = LLONG_MAX, - .wb_ub = work->ub, }; unsigned long start_time = jiffies; long write_chunk; @@ -707,14 +704,6 @@ static long writeback_sb_inodes(struct super_block *sb, * kind writeout is handled by the freer. */ spin_lock(&inode->i_lock); - if (wbc.wb_ub && !wb->bdi->dirty_exceeded && - (inode->i_mapping->dirtied_ub != wbc.wb_ub) && - (inode->i_state & I_DIRTY) == I_DIRTY_PAGES && - ub_should_skip_writeback(wbc.wb_ub, inode)) { - requeue_io(inode, wb); - continue; - } - if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) { spin_unlock(&inode->i_lock); redirty_tail(inode, wb); @@ -913,12 +902,9 @@ static long wb_writeback(struct bdi_writeback *wb, /* * For background writeout, stop when we are below the - * background dirty threshold. For filtered background - * writeback we write all inodes dirtied before us, - * because we cannot dereference this ub pointer. + * background dirty threshold */ - if (work->for_background && !work->ub && - !over_bground_thresh(wb->bdi)) + if (work->for_background && !over_bground_thresh(wb->bdi)) break; /* @@ -1371,7 +1357,7 @@ out_unlock_inode: } EXPORT_SYMBOL(__mark_inode_dirty); -static void wait_sb_inodes(struct super_block *sb, struct user_beancounter *ub) +static void wait_sb_inodes(struct super_block *sb) { struct inode *inode, *old_inode = NULL; @@ -1399,11 +1385,6 @@ static void wait_sb_inodes(struct super_block *sb, struct user_beancounter *ub) spin_unlock(&inode->i_lock); continue; } - if (ub && (mapping->dirtied_ub != ub) && - (inode->i_state & I_DIRTY) == I_DIRTY_PAGES) { - spin_unlock(&inode->i_lock); - continue; - } __iget(inode); spin_unlock(&inode->i_lock); spin_unlock(&inode_sb_list_lock); @@ -1522,12 +1503,11 @@ EXPORT_SYMBOL(try_to_writeback_inodes_sb); * This function writes and waits on any dirty inode belonging to this * super_block. */ -void sync_inodes_sb_ub(struct super_block *sb, struct user_beancounter *ub) +void sync_inodes_sb(struct super_block *sb) { DECLARE_COMPLETION_ONSTACK(done); struct wb_writeback_work work = { .sb = sb, - .ub = ub, .sync_mode = WB_SYNC_ALL, .nr_pages = LONG_MAX, .range_cyclic = 0, @@ -1544,12 +1524,7 @@ void sync_inodes_sb_ub(struct super_block *sb, struct user_beancounter *ub) bdi_queue_work(sb->s_bdi, &work); wait_for_completion(&done); - wait_sb_inodes(sb, ub); -} - -void sync_inodes_sb(struct super_block *sb) -{ - sync_inodes_sb_ub(sb, NULL); + wait_sb_inodes(sb); } EXPORT_SYMBOL(sync_inodes_sb); diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 13c2872..a193a7e 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -85,15 +85,12 @@ struct writeback_control { /* reserved for Red Hat */ RH_KABI_RESERVE(1) RH_KABI_RESERVE(2) - - struct user_beancounter *wb_ub; /* only for this beancounter */ }; /* * fs/fs-writeback.c */ struct bdi_writeback; -struct user_beancounter; int inode_wait(void *); void writeback_inodes_sb(struct super_block *, enum wb_reason reason); void writeback_inodes_sb_nr(struct super_block *, unsigned long nr, @@ -102,7 +99,6 @@ int try_to_writeback_inodes_sb(struct super_block *, enum wb_reason reason); int try_to_writeback_inodes_sb_nr(struct super_block *, unsigned long nr, enum wb_reason reason); void sync_inodes_sb(struct super_block *); -void sync_inodes_sb_ub(struct super_block *sb, struct user_beancounter *); void wakeup_flusher_threads(long nr_pages, enum wb_reason reason); void inode_wait_for_writeback(struct inode *inode); diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 0cb8437..2bb28ba 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -1590,10 +1590,6 @@ pause: virtinfo_notifier_call(VITYPE_IO, VIRTINFO_IO_BALANCE_DIRTY, (void*)pages_dirtied); - /* - * Even if this is filtered writeback for other ub it will write - * inodes for this ub, because ub->dirty_exceeded is set. - */ if (writeback_in_progress(bdi)) return; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel