diff options
| -rw-r--r-- | fs/xfs/libxfs/xfs_ag.c | 2 | ||||
| -rw-r--r-- | fs/xfs/libxfs/xfs_ag.h | 8 | ||||
| -rw-r--r-- | fs/xfs/libxfs/xfs_btree.c | 4 | ||||
| -rw-r--r-- | fs/xfs/libxfs/xfs_da_btree.c | 5 | 
4 files changed, 12 insertions, 7 deletions
| diff --git a/fs/xfs/libxfs/xfs_ag.c b/fs/xfs/libxfs/xfs_ag.c index d7d875cef07a..1e4ee042d52f 100644 --- a/fs/xfs/libxfs/xfs_ag.c +++ b/fs/xfs/libxfs/xfs_ag.c @@ -248,6 +248,7 @@ xfs_initialize_perag(  		spin_unlock(&mp->m_perag_lock);  		radix_tree_preload_end(); +#ifdef __KERNEL__  		/* Place kernel structure only init below this point. */  		spin_lock_init(&pag->pag_ici_lock);  		spin_lock_init(&pag->pagb_lock); @@ -257,6 +258,7 @@ xfs_initialize_perag(  		init_waitqueue_head(&pag->pagb_wait);  		pag->pagb_count = 0;  		pag->pagb_tree = RB_ROOT; +#endif /* __KERNEL__ */  		error = xfs_buf_hash_init(pag);  		if (error) diff --git a/fs/xfs/libxfs/xfs_ag.h b/fs/xfs/libxfs/xfs_ag.h index 3f597cad2c33..e411d51c2589 100644 --- a/fs/xfs/libxfs/xfs_ag.h +++ b/fs/xfs/libxfs/xfs_ag.h @@ -64,6 +64,10 @@ struct xfs_perag {  	/* Blocks reserved for the reverse mapping btree. */  	struct xfs_ag_resv	pag_rmapbt_resv; +	/* for rcu-safe freeing */ +	struct rcu_head	rcu_head; + +#ifdef __KERNEL__  	/* -- kernel only structures below this line -- */  	/* @@ -90,9 +94,6 @@ struct xfs_perag {  	spinlock_t	pag_buf_lock;	/* lock for pag_buf_hash */  	struct rhashtable pag_buf_hash; -	/* for rcu-safe freeing */ -	struct rcu_head	rcu_head; -  	/* background prealloc block trimming */  	struct delayed_work	pag_blockgc_work; @@ -102,6 +103,7 @@ struct xfs_perag {  	 * or have some other means to control concurrency.  	 */  	struct rhashtable	pagi_unlinked_hash; +#endif /* __KERNEL__ */  };  int xfs_initialize_perag(struct xfs_mount *mp, xfs_agnumber_t agcount, diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c index b4e19aacb9de..f18a875f51c6 100644 --- a/fs/xfs/libxfs/xfs_btree.c +++ b/fs/xfs/libxfs/xfs_btree.c @@ -2785,6 +2785,7 @@ error0:  	return error;  } +#ifdef __KERNEL__  struct xfs_btree_split_args {  	struct xfs_btree_cur	*cur;  	int			level; @@ -2870,6 +2871,9 @@ xfs_btree_split(  	destroy_work_on_stack(&args.work);  	return args.result;  } +#else +#define xfs_btree_split	__xfs_btree_split +#endif /* __KERNEL__ */  /* diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c index dd7a2dbce1d1..9dc1ecb9713d 100644 --- a/fs/xfs/libxfs/xfs_da_btree.c +++ b/fs/xfs/libxfs/xfs_da_btree.c @@ -864,7 +864,6 @@ xfs_da3_node_rebalance(  {  	struct xfs_da_intnode	*node1;  	struct xfs_da_intnode	*node2; -	struct xfs_da_intnode	*tmpnode;  	struct xfs_da_node_entry *btree1;  	struct xfs_da_node_entry *btree2;  	struct xfs_da_node_entry *btree_s; @@ -894,9 +893,7 @@ xfs_da3_node_rebalance(  	    ((be32_to_cpu(btree2[0].hashval) < be32_to_cpu(btree1[0].hashval)) ||  	     (be32_to_cpu(btree2[nodehdr2.count - 1].hashval) <  			be32_to_cpu(btree1[nodehdr1.count - 1].hashval)))) { -		tmpnode = node1; -		node1 = node2; -		node2 = tmpnode; +		swap(node1, node2);  		xfs_da3_node_hdr_from_disk(dp->i_mount, &nodehdr1, node1);  		xfs_da3_node_hdr_from_disk(dp->i_mount, &nodehdr2, node2);  		btree1 = nodehdr1.btree; |