]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
convert nilfs2 to ->evict_inode()
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 7 Jun 2010 15:55:00 +0000 (11:55 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 9 Aug 2010 20:48:25 +0000 (16:48 -0400)
[folded build fix from sfr]

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/nilfs2/inode.c
fs/nilfs2/nilfs.h
fs/nilfs2/super.c

index 051d279abb379f3d603dba0bef4c851c3906e340..eccb2f2e2315bcb8cba87a7bb30fdf202f0b5f44 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/writeback.h>
 #include <linux/uio.h>
 #include "nilfs.h"
+#include "btnode.h"
 #include "segment.h"
 #include "page.h"
 #include "mdt.h"
@@ -354,7 +355,6 @@ void nilfs_free_inode(struct inode *inode)
        struct super_block *sb = inode->i_sb;
        struct nilfs_sb_info *sbi = NILFS_SB(sb);
 
-       clear_inode(inode);
        /* XXX: check error code? Is there any thing I can do? */
        (void) nilfs_ifile_delete_inode(sbi->s_ifile, inode->i_ino);
        atomic_dec(&sbi->s_inodes_count);
@@ -614,16 +614,34 @@ void nilfs_truncate(struct inode *inode)
           But truncate has no return value. */
 }
 
-void nilfs_delete_inode(struct inode *inode)
+static void nilfs_clear_inode(struct inode *inode)
+{
+       struct nilfs_inode_info *ii = NILFS_I(inode);
+
+       /*
+        * Free resources allocated in nilfs_read_inode(), here.
+        */
+       BUG_ON(!list_empty(&ii->i_dirty));
+       brelse(ii->i_bh);
+       ii->i_bh = NULL;
+
+       if (test_bit(NILFS_I_BMAP, &ii->i_state))
+               nilfs_bmap_clear(ii->i_bmap);
+
+       nilfs_btnode_cache_clear(&ii->i_btnode_cache);
+}
+
+void nilfs_evict_inode(struct inode *inode)
 {
        struct nilfs_transaction_info ti;
        struct super_block *sb = inode->i_sb;
        struct nilfs_inode_info *ii = NILFS_I(inode);
 
-       if (unlikely(is_bad_inode(inode))) {
+       if (inode->i_nlink || unlikely(is_bad_inode(inode))) {
                if (inode->i_data.nrpages)
                        truncate_inode_pages(&inode->i_data, 0);
-               clear_inode(inode);
+               end_writeback(inode);
+               nilfs_clear_inode(inode);
                return;
        }
        nilfs_transaction_begin(sb, &ti, 0); /* never fails */
@@ -633,6 +651,8 @@ void nilfs_delete_inode(struct inode *inode)
 
        nilfs_truncate_bmap(ii, 0);
        nilfs_mark_inode_dirty(inode);
+       end_writeback(inode);
+       nilfs_clear_inode(inode);
        nilfs_free_inode(inode);
        /* nilfs_free_inode() marks inode buffer dirty */
        if (IS_SYNC(inode))
index 47d6d7928122b7049b409c4eb8ca0c48e3bb8512..f03279748099d9f95d8425b8bda997edeb58b052 100644 (file)
@@ -245,7 +245,7 @@ extern void nilfs_write_inode_common(struct inode *, struct nilfs_inode *, int);
 extern struct inode *nilfs_iget(struct super_block *, unsigned long);
 extern void nilfs_update_inode(struct inode *, struct buffer_head *);
 extern void nilfs_truncate(struct inode *);
-extern void nilfs_delete_inode(struct inode *);
+extern void nilfs_evict_inode(struct inode *);
 extern int nilfs_setattr(struct dentry *, struct iattr *);
 extern int nilfs_load_inode_block(struct nilfs_sb_info *, struct inode *,
                                  struct buffer_head **);
index 414ef68931cf48dc0443892cae12bcab91262660..7c7572a4e13883ffae05711026e0be02e4b855b4 100644 (file)
@@ -159,23 +159,6 @@ void nilfs_destroy_inode(struct inode *inode)
        kmem_cache_free(nilfs_inode_cachep, NILFS_I(inode));
 }
 
-static void nilfs_clear_inode(struct inode *inode)
-{
-       struct nilfs_inode_info *ii = NILFS_I(inode);
-
-       /*
-        * Free resources allocated in nilfs_read_inode(), here.
-        */
-       BUG_ON(!list_empty(&ii->i_dirty));
-       brelse(ii->i_bh);
-       ii->i_bh = NULL;
-
-       if (test_bit(NILFS_I_BMAP, &ii->i_state))
-               nilfs_bmap_clear(ii->i_bmap);
-
-       nilfs_btnode_cache_clear(&ii->i_btnode_cache);
-}
-
 static int nilfs_sync_super(struct nilfs_sb_info *sbi, int dupsb)
 {
        struct the_nilfs *nilfs = sbi->s_nilfs;
@@ -467,7 +450,7 @@ static const struct super_operations nilfs_sops = {
        /* .write_inode    = nilfs_write_inode, */
        /* .put_inode      = nilfs_put_inode, */
        /* .drop_inode    = nilfs_drop_inode, */
-       .delete_inode   = nilfs_delete_inode,
+       .evict_inode    = nilfs_evict_inode,
        .put_super      = nilfs_put_super,
        /* .write_super    = nilfs_write_super, */
        .sync_fs        = nilfs_sync_fs,
@@ -475,7 +458,6 @@ static const struct super_operations nilfs_sops = {
        /* .unlockfs */
        .statfs         = nilfs_statfs,
        .remount_fs     = nilfs_remount,
-       .clear_inode    = nilfs_clear_inode,
        /* .umount_begin */
        .show_options = nilfs_show_options
 };