Re: [PATCH 08/25] SUNRPC: remove BUG_ON() from rpc_sleep_on*()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2012-10-16 at 12:30 -0400, Weston Andros Adamson wrote:
> Replace BUG_ON() with WARN_ON_ONCE() and clean up by calling rpc_exit().
> 
> Signed-off-by: Weston Andros Adamson <dros@xxxxxxxxxx>
> ---
>  net/sunrpc/sched.c |   12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
> index 6357fcb..ec9513d 100644
> --- a/net/sunrpc/sched.c
> +++ b/net/sunrpc/sched.c
> @@ -343,7 +343,11 @@ void rpc_sleep_on(struct rpc_wait_queue *q, struct rpc_task *task,
>  				rpc_action action)
>  {
>  	/* We shouldn't ever put an inactive task to sleep */
> -	BUG_ON(!RPC_IS_ACTIVATED(task));
> +	WARN_ON_ONCE(!RPC_IS_ACTIVATED(task));
> +	if (!RPC_IS_ACTIVATED(task)) {
> +		rpc_exit(task, -EINVAL);

We should not call rpc_exit(), since the RPC call hasn't even been
started at this time. We should rather set task->tk_status to -EIO, and
then call rpc_put_task_async().

> +		return;
> +	}
>  
>  	/*
>  	 * Protect the queue operations.
> @@ -358,7 +362,11 @@ void rpc_sleep_on_priority(struct rpc_wait_queue *q, struct rpc_task *task,
>  		rpc_action action, int priority)
>  {
>  	/* We shouldn't ever put an inactive task to sleep */
> -	BUG_ON(!RPC_IS_ACTIVATED(task));
> +	WARN_ON_ONCE(!RPC_IS_ACTIVATED(task));
> +	if (!RPC_IS_ACTIVATED(task)) {
> +		rpc_exit(task, -EINVAL);
> +		return;
> +	}
>  
>  	/*
>  	 * Protect the queue operations.

-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com
��.n��������+%������w��{.n�����{��w���jg��������ݢj����G�������j:+v���w�m������w�������h�����٥



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux