From 170ee723ea2697cca41a9676ccf27e6aeefcf3be Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Tue, 16 Oct 2007 23:30:35 -0700 Subject: [PATCH] --- yaml --- r: 70727 b: refs/heads/master c: 1b43ef91d40190b16ba10218e66d5c2c4ba11de3 h: refs/heads/master i: 70725: 0b19c02a55fd7ead873e2a8c2a85b58f91e76861 70723: 3cd741fddfdef4f5f0067551bf86a5d0a3fdec58 70719: b8bfced711ca008cc5f1d194e652aeb1fe3f6e69 v: v3 --- [refs] | 2 +- trunk/fs/fs-writeback.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index b60831616f5c..ccf858fdbf4d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c986d1e2a460cbce79d631c51519ae82c778c6c5 +refs/heads/master: 1b43ef91d40190b16ba10218e66d5c2c4ba11de3 diff --git a/trunk/fs/fs-writeback.c b/trunk/fs/fs-writeback.c index eb8dc1f22775..a3d7a829137d 100644 --- a/trunk/fs/fs-writeback.c +++ b/trunk/fs/fs-writeback.c @@ -201,7 +201,6 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc) { unsigned dirty; struct address_space *mapping = inode->i_mapping; - struct super_block *sb = inode->i_sb; int wait = wbc->sync_mode == WB_SYNC_ALL; int ret; @@ -237,7 +236,16 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc) /* * We didn't write back all the pages. nfs_writepages() * sometimes bales out without doing anything. Redirty - * the inode. It is still on sb->s_io. + * the inode. It is moved from s_io onto s_dirty. + */ + /* + * akpm: if the caller was the kupdate function we put + * this inode at the head of s_dirty so it gets first + * consideration. Otherwise, move it to the tail, for + * the reasons described there. I'm not really sure + * how much sense this makes. Presumably I had a good + * reasons for doing it this way, and I'd rather not + * muck with it at present. */ if (wbc->for_kupdate) { /* @@ -257,8 +265,7 @@ __sync_single_inode(struct inode *inode, struct writeback_control *wbc) * all the other files. */ inode->i_state |= I_DIRTY_PAGES; - inode->dirtied_when = jiffies; - list_move(&inode->i_list, &sb->s_dirty); + redirty_tail(inode); } } else if (inode->i_state & I_DIRTY) { /*