diff options
Diffstat (limited to 'fs/xfs/xfs_alloc.c')
| -rw-r--r-- | fs/xfs/xfs_alloc.c | 43 | 
1 files changed, 2 insertions, 41 deletions
diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 4f33c32affe..335206a9c69 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -1866,6 +1866,7 @@ xfs_alloc_fix_freelist(  	/*  	 * Initialize the args structure.  	 */ +	memset(&targs, 0, sizeof(targs));  	targs.tp = tp;  	targs.mp = mp;  	targs.agbp = agbp; @@ -2207,7 +2208,7 @@ xfs_alloc_read_agf(   * group or loop over the allocation groups to find the result.   */  int				/* error */ -__xfs_alloc_vextent( +xfs_alloc_vextent(  	xfs_alloc_arg_t	*args)	/* allocation argument structure */  {  	xfs_agblock_t	agsize;	/* allocation group size */ @@ -2417,46 +2418,6 @@ error0:  	return error;  } -static void -xfs_alloc_vextent_worker( -	struct work_struct	*work) -{ -	struct xfs_alloc_arg	*args = container_of(work, -						struct xfs_alloc_arg, work); -	unsigned long		pflags; - -	/* we are in a transaction context here */ -	current_set_flags_nested(&pflags, PF_FSTRANS); - -	args->result = __xfs_alloc_vextent(args); -	complete(args->done); - -	current_restore_flags_nested(&pflags, PF_FSTRANS); -} - -/* - * Data allocation requests often come in with little stack to work on. Push - * them off to a worker thread so there is lots of stack to use. Metadata - * requests, OTOH, are generally from low stack usage paths, so avoid the - * context switch overhead here. - */ -int -xfs_alloc_vextent( -	struct xfs_alloc_arg	*args) -{ -	DECLARE_COMPLETION_ONSTACK(done); - -	if (!args->userdata) -		return __xfs_alloc_vextent(args); - - -	args->done = &done; -	INIT_WORK_ONSTACK(&args->work, xfs_alloc_vextent_worker); -	queue_work(xfs_alloc_wq, &args->work); -	wait_for_completion(&done); -	return args->result; -} -  /*   * Free an extent.   * Just break up the extent address and hand off to xfs_free_ag_extent  |