Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1b43ef91d40190b16ba10218e66d5c2c4ba11de3
Commit:     1b43ef91d40190b16ba10218e66d5c2c4ba11de3
Parent:     c986d1e2a460cbce79d631c51519ae82c778c6c5
Author:     Andrew Morton <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 23:30:35 2007 -0700
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Oct 17 08:43:02 2007 -0700

    writeback: fix comment, use helper function
    
    There's a comment in there which claims that the inode is left on s_io
    if nfs chickened out of writing some data.
    
    But that's not been true for three years.
    9290280ced13c85689adeffa587e9a53bd3a5873 fixed a livelock by moving these
    inodes back onto s_dirty.  Fix the comment.
    
    In the second leg of the `if', use redirty_tail() rather than open-coding 
it.
    
    Add weaselly comment indicating lack of confidence in the code and lack of 
the
    fortitude which would be needed to fiddle with it.
    
    Cc: Mike Waychison <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 fs/fs-writeback.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index eb8dc1f..a3d7a82 100644
--- a/fs/fs-writeback.c
+++ b/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) {
                        /*
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to