From 2a604953a00bd8d6840cf87a771bcbb66251772e Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Fri, 26 Jan 2007 12:53:20 -0800 Subject: [PATCH] --- yaml --- r: 45815 b: refs/heads/master c: 4b89eed93e0fa40a63e3d7b1796ec1337ea7a3aa h: refs/heads/master i: 45813: d5a79c82881713bf46ae8d52eb6ebcd17e84d772 45811: 7f2d6ffcedb6e95698768f6dc7f1644c4be7b2a0 45807: 8a7f277d10a24ed79b29dd842b33ab2136c686da v: v3 --- [refs] | 2 +- trunk/fs/fs-writeback.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 913a127a5523..f3b4e550959c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ecdfc9787fe527491baefc22dce8b2dbd5b2908d +refs/heads/master: 4b89eed93e0fa40a63e3d7b1796ec1337ea7a3aa diff --git a/trunk/fs/fs-writeback.c b/trunk/fs/fs-writeback.c index c403b66ec83c..a4b142a6a2c7 100644 --- a/trunk/fs/fs-writeback.c +++ b/trunk/fs/fs-writeback.c @@ -251,8 +251,19 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc) WARN_ON(inode->i_state & I_WILL_FREE); if ((wbc->sync_mode != WB_SYNC_ALL) && (inode->i_state & I_LOCK)) { + struct address_space *mapping = inode->i_mapping; + int ret; + list_move(&inode->i_list, &inode->i_sb->s_dirty); - return 0; + + /* + * Even if we don't actually write the inode itself here, + * we can at least start some of the data writeout.. + */ + spin_unlock(&inode_lock); + ret = do_writepages(mapping, wbc); + spin_lock(&inode_lock); + return ret; } /*