From 6c1fdf5a5001b3e0903202529539785054249ff2 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Mon, 7 Jun 2010 00:34:05 -0400 Subject: [PATCH] --- yaml --- r: 207569 b: refs/heads/master c: d640e1b50885b5beb61ccacdebf9f3f05ee2119c h: refs/heads/master i: 207567: 4f00bae5fd2dd6da09b3153bebb6a5e87a5fcc77 v: v3 --- [refs] | 2 +- trunk/fs/ubifs/super.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 9dd5b85f9dbe..765be7f1843d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 62aff86fdf18657d9eca7878654415f94f16d027 +refs/heads/master: d640e1b50885b5beb61ccacdebf9f3f05ee2119c diff --git a/trunk/fs/ubifs/super.c b/trunk/fs/ubifs/super.c index 4d2f2157dd3f..899066dd0c14 100644 --- a/trunk/fs/ubifs/super.c +++ b/trunk/fs/ubifs/super.c @@ -327,7 +327,7 @@ static int ubifs_write_inode(struct inode *inode, struct writeback_control *wbc) return err; } -static void ubifs_delete_inode(struct inode *inode) +static void ubifs_evict_inode(struct inode *inode) { int err; struct ubifs_info *c = inode->i_sb->s_fs_info; @@ -343,9 +343,12 @@ static void ubifs_delete_inode(struct inode *inode) dbg_gen("inode %lu, mode %#x", inode->i_ino, (int)inode->i_mode); ubifs_assert(!atomic_read(&inode->i_count)); - ubifs_assert(inode->i_nlink == 0); truncate_inode_pages(&inode->i_data, 0); + + if (inode->i_nlink) + goto done; + if (is_bad_inode(inode)) goto out; @@ -367,7 +370,8 @@ static void ubifs_delete_inode(struct inode *inode) c->nospace = c->nospace_rp = 0; smp_wmb(); } - clear_inode(inode); +done: + end_writeback(inode); } static void ubifs_dirty_inode(struct inode *inode) @@ -1824,7 +1828,7 @@ const struct super_operations ubifs_super_operations = { .destroy_inode = ubifs_destroy_inode, .put_super = ubifs_put_super, .write_inode = ubifs_write_inode, - .delete_inode = ubifs_delete_inode, + .evict_inode = ubifs_evict_inode, .statfs = ubifs_statfs, .dirty_inode = ubifs_dirty_inode, .remount_fs = ubifs_remount_fs,