diff options
| -rw-r--r-- | fs/fs-writeback.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index c403b66ec83c..a4b142a6a2c7 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
| @@ -251,8 +251,19 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc) | |||
| 251 | WARN_ON(inode->i_state & I_WILL_FREE); | 251 | WARN_ON(inode->i_state & I_WILL_FREE); |
| 252 | 252 | ||
| 253 | if ((wbc->sync_mode != WB_SYNC_ALL) && (inode->i_state & I_LOCK)) { | 253 | if ((wbc->sync_mode != WB_SYNC_ALL) && (inode->i_state & I_LOCK)) { |
| 254 | struct address_space *mapping = inode->i_mapping; | ||
| 255 | int ret; | ||
| 256 | |||
| 254 | list_move(&inode->i_list, &inode->i_sb->s_dirty); | 257 | list_move(&inode->i_list, &inode->i_sb->s_dirty); |
| 255 | return 0; | 258 | |
| 259 | /* | ||
| 260 | * Even if we don't actually write the inode itself here, | ||
| 261 | * we can at least start some of the data writeout.. | ||
| 262 | */ | ||
| 263 | spin_unlock(&inode_lock); | ||
| 264 | ret = do_writepages(mapping, wbc); | ||
| 265 | spin_lock(&inode_lock); | ||
| 266 | return ret; | ||
| 256 | } | 267 | } |
| 257 | 268 | ||
| 258 | /* | 269 | /* |
