diff options
Diffstat (limited to 'fs/xfs/xfs_icache.c')
| -rw-r--r-- | fs/xfs/xfs_icache.c | 29 | 
1 files changed, 8 insertions, 21 deletions
diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 193206ba4358..98d35244eecc 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -18,24 +18,19 @@  #include "xfs.h"  #include "xfs_fs.h"  #include "xfs_format.h" -#include "xfs_types.h" -#include "xfs_log.h" -#include "xfs_log_priv.h" +#include "xfs_log_format.h" +#include "xfs_trans_resv.h"  #include "xfs_inum.h" -#include "xfs_trans.h" -#include "xfs_trans_priv.h"  #include "xfs_sb.h"  #include "xfs_ag.h"  #include "xfs_mount.h" -#include "xfs_bmap_btree.h"  #include "xfs_inode.h" -#include "xfs_dinode.h"  #include "xfs_error.h" -#include "xfs_filestream.h" +#include "xfs_trans.h" +#include "xfs_trans_priv.h"  #include "xfs_inode_item.h"  #include "xfs_quota.h"  #include "xfs_trace.h" -#include "xfs_fsops.h"  #include "xfs_icache.h"  #include "xfs_bmap_util.h" @@ -119,11 +114,6 @@ xfs_inode_free(  		ip->i_itemp = NULL;  	} -	/* asserts to verify all state is correct here */ -	ASSERT(atomic_read(&ip->i_pincount) == 0); -	ASSERT(!spin_is_locked(&ip->i_flags_lock)); -	ASSERT(!xfs_isiflocked(ip)); -  	/*  	 * Because we use RCU freeing we need to ensure the inode always  	 * appears to be reclaimed with an invalid inode number when in the @@ -135,6 +125,10 @@ xfs_inode_free(  	ip->i_ino = 0;  	spin_unlock(&ip->i_flags_lock); +	/* asserts to verify all state is correct here */ +	ASSERT(atomic_read(&ip->i_pincount) == 0); +	ASSERT(!xfs_isiflocked(ip)); +  	call_rcu(&VFS_I(ip)->i_rcu, xfs_inode_free_callback);  } @@ -501,11 +495,6 @@ xfs_inode_ag_walk_grab(  	if (!igrab(inode))  		return ENOENT; -	if (is_bad_inode(inode)) { -		IRELE(ip); -		return ENOENT; -	} -  	/* inode is valid */  	return 0; @@ -919,8 +908,6 @@ restart:  		xfs_iflock(ip);  	} -	if (is_bad_inode(VFS_I(ip))) -		goto reclaim;  	if (XFS_FORCED_SHUTDOWN(ip->i_mount)) {  		xfs_iunpin_wait(ip);  		xfs_iflush_abort(ip, false);  |