Whamcloud - gitweb
b=17671
[fs/lustre-release.git] / lustre / kernel_patches / patches / inode-nr_unused-2.6.9-rhel4.patch
1 Index: RH_2_6_9_55/fs/fs-writeback.c
2 ===================================================================
3 --- RH_2_6_9_55.orig/fs/fs-writeback.c
4 +++ RH_2_6_9_55/fs/fs-writeback.c
5 @@ -230,7 +230,6 @@
6                          * The inode is clean, unused
7                          */
8                         list_move(&inode->i_list, &inode_unused);
9 -                       inodes_stat.nr_unused++;
10                 }
11         }
12         wake_up_inode(inode);
13 @@ -244,6 +243,11 @@
14  __writeback_single_inode(struct inode *inode,
15                         struct writeback_control *wbc)
16  {
17 +       if (!atomic_read(&inode->i_count))
18 +               WARN_ON(!(inode->i_state & I_WILL_FREE));
19 +       else
20 +               WARN_ON(inode->i_state & I_WILL_FREE);
21 +
22         if ((wbc->sync_mode != WB_SYNC_ALL) && (inode->i_state & I_LOCK)) {
23                 list_move(&inode->i_list, &inode->i_sb->s_dirty);
24                 return 0;
25 @@ -253,10 +257,8 @@
26          * It's a data-integrity sync.  We must wait.
27          */
28         while (inode->i_state & I_LOCK) {
29 -               __iget(inode);
30                 spin_unlock(&inode_lock);
31                 __wait_on_inode(inode);
32 -               iput(inode);
33                 spin_lock(&inode_lock);
34         }
35         return __sync_single_inode(inode, wbc);
36 Index: RH_2_6_9_55/fs/inode.c
37 ===================================================================
38 --- RH_2_6_9_55.orig/fs/inode.c
39 +++ RH_2_6_9_55/fs/inode.c
40 @@ -1056,6 +1056,7 @@
41         if (inode->i_data.nrpages)
42                 truncate_inode_pages(&inode->i_data, 0);
43         clear_inode(inode);
44 +       wake_up_inode(inode);   
45         destroy_inode(inode);
46  }
47