nilfs2: hide nilfs_mdt_clear calls in nilfs_mdt_destroy

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>
This commit is contained in:
Ryusuke Konishi 2009-11-13 02:25:41 +09:00
parent 3961f0e277
commit fd66c0d5c3
6 changed files with 5 additions and 15 deletions

View 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) void nilfs_clear_gcinode(struct inode *inode)
{ {
nilfs_mdt_clear(inode);
nilfs_mdt_destroy(inode); nilfs_mdt_destroy(inode);
} }

View File

@ -553,14 +553,15 @@ void nilfs_mdt_set_shadow(struct inode *orig, struct inode *shadow)
&NILFS_I(orig)->i_btnode_cache; &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); struct nilfs_inode_info *ii = NILFS_I(inode);
invalidate_mapping_pages(inode->i_mapping, 0, -1); invalidate_mapping_pages(inode->i_mapping, 0, -1);
truncate_inode_pages(inode->i_mapping, 0); 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); 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); struct nilfs_mdt_info *mdi = NILFS_MDT(inode);
nilfs_mdt_clear(inode);
kfree(mdi->mi_bgl); /* kfree(NULL) is safe */ kfree(mdi->mi_bgl); /* kfree(NULL) is safe */
kfree(mdi); kfree(mdi);
nilfs_destroy_inode(inode); nilfs_destroy_inode(inode);

View 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 *, struct inode *nilfs_mdt_new_common(struct the_nilfs *, struct super_block *,
ino_t, gfp_t, size_t); ino_t, gfp_t, size_t);
void nilfs_mdt_destroy(struct inode *); 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_entry_size(struct inode *, unsigned, unsigned);
void nilfs_mdt_set_shadow(struct inode *, struct inode *); void nilfs_mdt_set_shadow(struct inode *, struct inode *);

View File

@ -770,14 +770,8 @@ int nilfs_recover_logical_segments(struct the_nilfs *nilfs,
nilfs_finish_roll_forward(nilfs, sbi, ri); nilfs_finish_roll_forward(nilfs, sbi, ri);
} }
nilfs_detach_checkpoint(sbi);
return 0;
failed: failed:
nilfs_detach_checkpoint(sbi); nilfs_detach_checkpoint(sbi);
nilfs_mdt_clear(nilfs->ns_cpfile);
nilfs_mdt_clear(nilfs->ns_sufile);
nilfs_mdt_clear(nilfs->ns_dat);
return err; return err;
} }

View File

@ -407,7 +407,6 @@ void nilfs_detach_checkpoint(struct nilfs_sb_info *sbi)
{ {
struct the_nilfs *nilfs = sbi->s_nilfs; struct the_nilfs *nilfs = sbi->s_nilfs;
nilfs_mdt_clear(sbi->s_ifile);
nilfs_mdt_destroy(sbi->s_ifile); nilfs_mdt_destroy(sbi->s_ifile);
sbi->s_ifile = NULL; sbi->s_ifile = NULL;
down_write(&nilfs->ns_super_sem); down_write(&nilfs->ns_super_sem);

View File

@ -146,13 +146,9 @@ void put_nilfs(struct the_nilfs *nilfs)
might_sleep(); might_sleep();
if (nilfs_loaded(nilfs)) { if (nilfs_loaded(nilfs)) {
nilfs_mdt_clear(nilfs->ns_sufile);
nilfs_mdt_destroy(nilfs->ns_sufile); nilfs_mdt_destroy(nilfs->ns_sufile);
nilfs_mdt_clear(nilfs->ns_cpfile);
nilfs_mdt_destroy(nilfs->ns_cpfile); nilfs_mdt_destroy(nilfs->ns_cpfile);
nilfs_mdt_clear(nilfs->ns_dat);
nilfs_mdt_destroy(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); nilfs_mdt_destroy(nilfs->ns_gc_dat);
} }
if (nilfs_init(nilfs)) { if (nilfs_init(nilfs)) {