nilfs2: hide nilfs_mdt_clear calls in nilfs_mdt_destroy
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Thu, 12 Nov 2009 17:25:41 +0000 (02:25 +0900)
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Fri, 20 Nov 2009 01:05:48 +0000 (10:05 +0900)
This will hide a function call of nilfs_mdt_clear() in
nilfs_mdt_destroy().

This ensures nilfs_mdt_destroy() to do cleanup jobs included in
nilfs_mdt_clear().

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
fs/nilfs2/gcinode.c
fs/nilfs2/mdt.c
fs/nilfs2/mdt.h
fs/nilfs2/recovery.c
fs/nilfs2/super.c
fs/nilfs2/the_nilfs.c

index 32b04da03829f8ad2425929d65ce1d3b9807ad2e..67d2099475b2df9ee736d5c9578a6c2bea83b30b 100644 (file)
@@ -266,7 +266,6 @@ struct inode *nilfs_gc_iget(struct the_nilfs *nilfs, ino_t ino, __u64 cno)
  */
 void nilfs_clear_gcinode(struct inode *inode)
 {
-       nilfs_mdt_clear(inode);
        nilfs_mdt_destroy(inode);
 }
 
index 62074e8d25cb5467642bb07eb158edd977018b8b..3028e8f31be2c2ec9e641163df27ed451c920278 100644 (file)
@@ -553,14 +553,15 @@ void nilfs_mdt_set_shadow(struct inode *orig, struct inode *shadow)
                &NILFS_I(orig)->i_btnode_cache;
 }
 
-void nilfs_mdt_clear(struct inode *inode)
+static void nilfs_mdt_clear(struct inode *inode)
 {
        struct nilfs_inode_info *ii = NILFS_I(inode);
 
        invalidate_mapping_pages(inode->i_mapping, 0, -1);
        truncate_inode_pages(inode->i_mapping, 0);
 
-       nilfs_bmap_clear(ii->i_bmap);
+       if (test_bit(NILFS_I_BMAP, &ii->i_state))
+               nilfs_bmap_clear(ii->i_bmap);
        nilfs_btnode_cache_clear(&ii->i_btnode_cache);
 }
 
@@ -568,6 +569,8 @@ void nilfs_mdt_destroy(struct inode *inode)
 {
        struct nilfs_mdt_info *mdi = NILFS_MDT(inode);
 
+       nilfs_mdt_clear(inode);
+
        kfree(mdi->mi_bgl); /* kfree(NULL) is safe */
        kfree(mdi);
        nilfs_destroy_inode(inode);
index cd2903af3c30cdf07966e7b65fbed4c1098c5a84..c396b6c03931bf091054174452bb9a1dd80eca8d 100644 (file)
@@ -79,7 +79,6 @@ struct inode *nilfs_mdt_new(struct the_nilfs *, struct super_block *, ino_t,
 struct inode *nilfs_mdt_new_common(struct the_nilfs *, struct super_block *,
                                   ino_t, gfp_t, size_t);
 void nilfs_mdt_destroy(struct inode *);
-void nilfs_mdt_clear(struct inode *);
 void nilfs_mdt_set_entry_size(struct inode *, unsigned, unsigned);
 void nilfs_mdt_set_shadow(struct inode *, struct inode *);
 
index 6dc83591d1182164c5fdaf4b27e92d20b794d4a6..bcd386d604d77aaa8c96e19edce099776746cbb8 100644 (file)
@@ -770,14 +770,8 @@ int nilfs_recover_logical_segments(struct the_nilfs *nilfs,
                nilfs_finish_roll_forward(nilfs, sbi, ri);
        }
 
-       nilfs_detach_checkpoint(sbi);
-       return 0;
-
  failed:
        nilfs_detach_checkpoint(sbi);
-       nilfs_mdt_clear(nilfs->ns_cpfile);
-       nilfs_mdt_clear(nilfs->ns_sufile);
-       nilfs_mdt_clear(nilfs->ns_dat);
        return err;
 }
 
index 05ae52a482c6385c5233ac2d9fc494008f7b0593..f52616977ea01aa6f2fcf170c91bc89d56a8cb97 100644 (file)
@@ -407,7 +407,6 @@ void nilfs_detach_checkpoint(struct nilfs_sb_info *sbi)
 {
        struct the_nilfs *nilfs = sbi->s_nilfs;
 
-       nilfs_mdt_clear(sbi->s_ifile);
        nilfs_mdt_destroy(sbi->s_ifile);
        sbi->s_ifile = NULL;
        down_write(&nilfs->ns_super_sem);
index bc7760c2a8f2a27f4b361434b7aad2453d86d5b5..75095edec2fc90308c32771b8ab528f5a762927a 100644 (file)
@@ -146,13 +146,9 @@ void put_nilfs(struct the_nilfs *nilfs)
 
        might_sleep();
        if (nilfs_loaded(nilfs)) {
-               nilfs_mdt_clear(nilfs->ns_sufile);
                nilfs_mdt_destroy(nilfs->ns_sufile);
-               nilfs_mdt_clear(nilfs->ns_cpfile);
                nilfs_mdt_destroy(nilfs->ns_cpfile);
-               nilfs_mdt_clear(nilfs->ns_dat);
                nilfs_mdt_destroy(nilfs->ns_dat);
-               /* XXX: how and when to clear nilfs->ns_gc_dat? */
                nilfs_mdt_destroy(nilfs->ns_gc_dat);
        }
        if (nilfs_init(nilfs)) {
This page took 0.031407 seconds and 5 git commands to generate.