X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Ffs-writeback.c;h=8d23b0b3871744a9fad98f3fcbdf5470083fb20d;hb=b5b80f2b20c833f979060cf48ae3ee6fbfa552be;hp=c403b66ec83c6525532c25decbe923c32356649b;hpb=8a84fc15ae5cafcc366dd85cf8e1ab2040679abc;p=linux-beck.git diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index c403b66ec83c..8d23b0b38717 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include @@ -251,8 +252,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; } /*