Commit 6fd1e5c9 authored by Al Viro's avatar Al Viro

convert nilfs2 to ->evict_inode()

[folded build fix from sfr]
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 4ec70c9b
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include <linux/writeback.h> #include <linux/writeback.h>
#include <linux/uio.h> #include <linux/uio.h>
#include "nilfs.h" #include "nilfs.h"
#include "btnode.h"
#include "segment.h" #include "segment.h"
#include "page.h" #include "page.h"
#include "mdt.h" #include "mdt.h"
...@@ -354,7 +355,6 @@ void nilfs_free_inode(struct inode *inode) ...@@ -354,7 +355,6 @@ void nilfs_free_inode(struct inode *inode)
struct super_block *sb = inode->i_sb; struct super_block *sb = inode->i_sb;
struct nilfs_sb_info *sbi = NILFS_SB(sb); struct nilfs_sb_info *sbi = NILFS_SB(sb);
clear_inode(inode);
/* XXX: check error code? Is there any thing I can do? */ /* XXX: check error code? Is there any thing I can do? */
(void) nilfs_ifile_delete_inode(sbi->s_ifile, inode->i_ino); (void) nilfs_ifile_delete_inode(sbi->s_ifile, inode->i_ino);
atomic_dec(&sbi->s_inodes_count); atomic_dec(&sbi->s_inodes_count);
...@@ -614,16 +614,34 @@ void nilfs_truncate(struct inode *inode) ...@@ -614,16 +614,34 @@ void nilfs_truncate(struct inode *inode)
But truncate has no return value. */ 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 nilfs_transaction_info ti;
struct super_block *sb = inode->i_sb; struct super_block *sb = inode->i_sb;
struct nilfs_inode_info *ii = NILFS_I(inode); 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) if (inode->i_data.nrpages)
truncate_inode_pages(&inode->i_data, 0); truncate_inode_pages(&inode->i_data, 0);
clear_inode(inode); end_writeback(inode);
nilfs_clear_inode(inode);
return; return;
} }
nilfs_transaction_begin(sb, &ti, 0); /* never fails */ nilfs_transaction_begin(sb, &ti, 0); /* never fails */
...@@ -633,6 +651,8 @@ void nilfs_delete_inode(struct inode *inode) ...@@ -633,6 +651,8 @@ void nilfs_delete_inode(struct inode *inode)
nilfs_truncate_bmap(ii, 0); nilfs_truncate_bmap(ii, 0);
nilfs_mark_inode_dirty(inode); nilfs_mark_inode_dirty(inode);
end_writeback(inode);
nilfs_clear_inode(inode);
nilfs_free_inode(inode); nilfs_free_inode(inode);
/* nilfs_free_inode() marks inode buffer dirty */ /* nilfs_free_inode() marks inode buffer dirty */
if (IS_SYNC(inode)) if (IS_SYNC(inode))
......
...@@ -245,7 +245,7 @@ extern void nilfs_write_inode_common(struct inode *, struct nilfs_inode *, int); ...@@ -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 struct inode *nilfs_iget(struct super_block *, unsigned long);
extern void nilfs_update_inode(struct inode *, struct buffer_head *); extern void nilfs_update_inode(struct inode *, struct buffer_head *);
extern void nilfs_truncate(struct inode *); 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_setattr(struct dentry *, struct iattr *);
extern int nilfs_load_inode_block(struct nilfs_sb_info *, struct inode *, extern int nilfs_load_inode_block(struct nilfs_sb_info *, struct inode *,
struct buffer_head **); struct buffer_head **);
......
...@@ -159,23 +159,6 @@ void nilfs_destroy_inode(struct inode *inode) ...@@ -159,23 +159,6 @@ void nilfs_destroy_inode(struct inode *inode)
kmem_cache_free(nilfs_inode_cachep, NILFS_I(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) static int nilfs_sync_super(struct nilfs_sb_info *sbi, int dupsb)
{ {
struct the_nilfs *nilfs = sbi->s_nilfs; struct the_nilfs *nilfs = sbi->s_nilfs;
...@@ -467,7 +450,7 @@ static const struct super_operations nilfs_sops = { ...@@ -467,7 +450,7 @@ static const struct super_operations nilfs_sops = {
/* .write_inode = nilfs_write_inode, */ /* .write_inode = nilfs_write_inode, */
/* .put_inode = nilfs_put_inode, */ /* .put_inode = nilfs_put_inode, */
/* .drop_inode = nilfs_drop_inode, */ /* .drop_inode = nilfs_drop_inode, */
.delete_inode = nilfs_delete_inode, .evict_inode = nilfs_evict_inode,
.put_super = nilfs_put_super, .put_super = nilfs_put_super,
/* .write_super = nilfs_write_super, */ /* .write_super = nilfs_write_super, */
.sync_fs = nilfs_sync_fs, .sync_fs = nilfs_sync_fs,
...@@ -475,7 +458,6 @@ static const struct super_operations nilfs_sops = { ...@@ -475,7 +458,6 @@ static const struct super_operations nilfs_sops = {
/* .unlockfs */ /* .unlockfs */
.statfs = nilfs_statfs, .statfs = nilfs_statfs,
.remount_fs = nilfs_remount, .remount_fs = nilfs_remount,
.clear_inode = nilfs_clear_inode,
/* .umount_begin */ /* .umount_begin */
.show_options = nilfs_show_options .show_options = nilfs_show_options
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment