Filter inodes before should happen befor the check for I_SYNC flag.
During per-container writeback we don't wan't to requeue inodes from
other containers.

https://jira.sw.ru/browse/PSBM-39583

Signed-off-by: Andrey Ryabinin <aryabi...@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);
 
-- 
2.4.10

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to