From 4323e55f6fc4ea1e49fb0a8905a0b2f5fee99875 Mon Sep 17 00:00:00 2001 From: Wu Fengguang Date: Wed, 23 Sep 2009 20:33:42 +0800 Subject: [PATCH] --- yaml --- r: 166335 b: refs/heads/master c: ae1b7f7d4b9ea587fda95c38301f4e72e8146634 h: refs/heads/master i: 166333: 705ce84bcd8cc9809697107dfd187ff0b595eecd 166331: 8714d00122e8228f7f448bfbc22f8f87116a4e34 166327: a37c856dbccd7167f73313b03ded86d05c3dc1ca 166319: 50a264d1b50ef194e125ccd6b03965b3f9ece093 166303: e5ba2a9cb00144f3ff7a1647fe37d7829228982d 166271: 06fccff4f8ca60597efc65a14cc32a1b65d29a85 v: v3 --- [refs] | 2 +- trunk/fs/fs-writeback.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 833546502c79..ea21fd4a4699 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7fbdea32328312c65870c397a0a436c3226c8631 +refs/heads/master: ae1b7f7d4b9ea587fda95c38301f4e72e8146634 diff --git a/trunk/fs/fs-writeback.c b/trunk/fs/fs-writeback.c index 551684de1392..916e83489caa 100644 --- a/trunk/fs/fs-writeback.c +++ b/trunk/fs/fs-writeback.c @@ -449,8 +449,13 @@ writeback_single_inode(struct inode *inode, struct writeback_control *wbc) spin_lock(&inode_lock); inode->i_state &= ~I_SYNC; if (!(inode->i_state & (I_FREEING | I_CLEAR))) { - if (!(inode->i_state & I_DIRTY) && - mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { + if (inode->i_state & I_DIRTY) { + /* + * Someone redirtied the inode while were writing back + * the pages. + */ + redirty_tail(inode); + } else if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { /* * We didn't write back all the pages. nfs_writepages() * sometimes bales out without doing anything. Redirty @@ -494,12 +499,6 @@ writeback_single_inode(struct inode *inode, struct writeback_control *wbc) inode->i_state |= I_DIRTY_PAGES; redirty_tail(inode); } - } else if (inode->i_state & I_DIRTY) { - /* - * Someone redirtied the inode while were writing back - * the pages. - */ - redirty_tail(inode); } else if (atomic_read(&inode->i_count)) { /* * The inode is clean, inuse