[Devel] [PATCH RHEL7 COMMIT] ve/fs/writeback: filter per-container inodes earlier

Konstantin Khorenko khorenko at virtuozzo.com
Sat Feb 6 05:04:49 PST 2016


The commit is pushed to "branch-rh7-3.10.0-327.3.1-vz7.10.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-327.3.1.vz7.10.10
------>
commit 0ef145597e6beb146baa07e2cc2180567dc77c82
Author: Andrey Ryabinin <aryabinin at virtuozzo.com>
Date:   Sat Feb 6 17:04:49 2016 +0400

    ve/fs/writeback: filter per-container inodes earlier
    
    Filter inodes before should happen befor the check for I_SYNC flag.
    During per-container writeback we don't want to requeue inodes from
    other containers.
    
    https://jira.sw.ru/browse/PSBM-39583
    
    Signed-off-by: Andrey Ryabinin <aryabinin at virtuozzo.com>
    Reviewed-by: Vladimir Davydov <vdavydov at virtuozzo.com>
---
 fs/fs-writeback.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index d48530f9..16bc6b3 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -711,6 +711,13 @@ static long writeback_sb_inodes(struct super_block *sb,
 			redirty_tail(inode, wb);
 			continue;
 		}
+		if ((work->ub || work->filter_ub) &&
+		     ub_should_skip_writeback(work->ub, inode)) {
+			spin_unlock(&inode->i_lock);
+			redirty_tail(inode, wb);
+			continue;
+		}
+
 		if ((inode->i_state & I_SYNC) && wbc.sync_mode != WB_SYNC_ALL) {
 			/*
 			 * If this inode is locked for writeback and we are not
@@ -726,12 +733,6 @@ static long writeback_sb_inodes(struct super_block *sb,
 			trace_writeback_sb_inodes_requeue(inode);
 			continue;
 		}
-		if ((work->ub || work->filter_ub) &&
-		     ub_should_skip_writeback(work->ub, inode)) {
-			spin_unlock(&inode->i_lock);
-			redirty_tail(inode, wb);
-			continue;
-		}
 
 		spin_unlock(&wb->list_lock);
 


More information about the Devel mailing list