From d50e3c0476a7ef645500d5902191ff90ab76707d Mon Sep 17 00:00:00 2001 From: "Artem B. Bityuckiy" Date: Tue, 12 Jul 2005 13:58:12 -0700 Subject: [PATCH] --- yaml --- r: 4665 b: refs/heads/master c: 4120db47198d21d8cd3b2cdbbe1ea6118a50bcd4 h: refs/heads/master i: 4663: c1dbd6e6bb3f7030994e6c7e27c0bb2ccaab5f0a v: v3 --- [refs] | 2 +- trunk/fs/inode.c | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index b39d316c6d4e..db48b31b53b2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 168a9fd6a1bf91041adf9909f6c72cf747f0ca8c +refs/heads/master: 4120db47198d21d8cd3b2cdbbe1ea6118a50bcd4 diff --git a/trunk/fs/inode.c b/trunk/fs/inode.c index 0116d06731c2..5bc97507eeaa 100644 --- a/trunk/fs/inode.c +++ b/trunk/fs/inode.c @@ -282,6 +282,13 @@ static void dispose_list(struct list_head *head) if (inode->i_data.nrpages) truncate_inode_pages(&inode->i_data, 0); clear_inode(inode); + + spin_lock(&inode_lock); + hlist_del_init(&inode->i_hash); + list_del_init(&inode->i_sb_list); + spin_unlock(&inode_lock); + + wake_up_inode(inode); destroy_inode(inode); nr_disposed++; } @@ -317,8 +324,6 @@ static int invalidate_list(struct list_head *head, struct list_head *dispose) inode = list_entry(tmp, struct inode, i_sb_list); invalidate_inode_buffers(inode); if (!atomic_read(&inode->i_count)) { - hlist_del_init(&inode->i_hash); - list_del(&inode->i_sb_list); list_move(&inode->i_list, dispose); inode->i_state |= I_FREEING; count++; @@ -439,8 +444,6 @@ static void prune_icache(int nr_to_scan) if (!can_unuse(inode)) continue; } - hlist_del_init(&inode->i_hash); - list_del_init(&inode->i_sb_list); list_move(&inode->i_list, &freeable); inode->i_state |= I_FREEING; nr_pruned++;