1 diff -urp b1_4.RH_2_6_9_42_0_3.old/fs/fs-writeback.c b1_4.RH_2_6_9_42_0_3/fs/fs-writeback.c
2 --- b1_4.RH_2_6_9_42_0_3.old/fs/fs-writeback.c 2006-10-23 13:33:05.000000000 +0300
3 +++ b1_4.RH_2_6_9_42_0_3/fs/fs-writeback.c 2007-04-15 00:31:43.000000000 +0300
4 @@ -230,7 +230,6 @@ __sync_single_inode(struct inode *inode,
5 * The inode is clean, unused
7 list_move(&inode->i_list, &inode_unused);
8 - inodes_stat.nr_unused++;
12 @@ -244,6 +243,11 @@ static int
13 __writeback_single_inode(struct inode *inode,
14 struct writeback_control *wbc)
16 + if (!atomic_read(&inode->i_count))
17 + WARN_ON(!(inode->i_state & I_WILL_FREE));
19 + WARN_ON(inode->i_state & I_WILL_FREE);
21 if ((wbc->sync_mode != WB_SYNC_ALL) && (inode->i_state & I_LOCK)) {
22 list_move(&inode->i_list, &inode->i_sb->s_dirty);
24 @@ -253,10 +257,8 @@ __writeback_single_inode(struct inode *i
25 * It's a data-integrity sync. We must wait.
27 while (inode->i_state & I_LOCK) {
29 spin_unlock(&inode_lock);
30 __wait_on_inode(inode);
32 spin_lock(&inode_lock);
34 return __sync_single_inode(inode, wbc);
35 ä×ÏÉÞÎÙÅ ÆÁÊÌÙ b1_4.RH_2_6_9_42_0_3.old/fs/fs-writeback.o É b1_4.RH_2_6_9_42_0_3/fs/fs-writeback.o ÒÁÚÌÉÞÁÀÔÓÑ
36 diff -urp b1_4.RH_2_6_9_42_0_3.old/fs/inode.c b1_4.RH_2_6_9_42_0_3/fs/inode.c
37 --- b1_4.RH_2_6_9_42_0_3.old/fs/inode.c 2006-12-14 15:20:40.000000000 +0200
38 +++ b1_4.RH_2_6_9_42_0_3/fs/inode.c 2007-04-15 00:31:28.000000000 +0300
39 @@ -1054,6 +1054,7 @@ static void generic_forget_inode(struct
40 if (inode->i_data.nrpages)
41 truncate_inode_pages(&inode->i_data, 0);
43 + wake_up_inode(inode);