Re: [PATCH] NFS: remove incorrect "Lock reclaim failed!" warning.

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

 



On Mon, 2013-08-12 at 16:52 +1000, NeilBrown wrote:
> 
> After reclaiming state that was lost, the NFS client tries to reclaim
> any locks, and then checks that each one has NFS_LOCK_INITIALIZED set
> (which means that the server has confirmed the lock).
> However if the client holds a delegation, nfs_reclaim_locks() simply aborts
> (or more accurately it called nfs_lock_reclaim() and that returns without
> doing anything).
> 
> This is because when a delegation is held, the server doesn't need to
> know about locks.
> 
> So if a delegation is held, NFS_LOCK_INITIALIZED is not expected, and
> its absence is certainly not an error.
> 
> So don't print the warnings if NFS_DELGATED_STATE is set.
> 
> Signed-off-by: NeilBrown <neilb@xxxxxxx>
> 
> diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
> index e22862f..e4e063f 100644
> --- a/fs/nfs/nfs4state.c
> +++ b/fs/nfs/nfs4state.c
> @@ -1443,14 +1443,16 @@ restart:
>  		if (status >= 0) {
>  			status = nfs4_reclaim_locks(state, ops);
>  			if (status >= 0) {
> -				spin_lock(&state->state_lock);
> -				list_for_each_entry(lock, &state->lock_states, ls_locks) {
> -					if (!test_bit(NFS_LOCK_INITIALIZED, &lock->ls_flags))
> -						pr_warn_ratelimited("NFS: "
> -							"%s: Lock reclaim "
> -							"failed!\n", __func__);
> +				if (test_bit(NFS_DELEGATED_STATE, &state->flags) != 0) {
> +					spin_lock(&state->state_lock);
> +					list_for_each_entry(lock, &state->lock_states, ls_locks) {
> +						if (!test_bit(NFS_LOCK_INITIALIZED, &lock->ls_flags))
> +							pr_warn_ratelimited("NFS: "
> +									    "%s: Lock reclaim "
> +									    "failed!\n", __func__);
> +					}
> +					spin_unlock(&state->state_lock);
>  				}
> -				spin_unlock(&state->state_lock);
>  				nfs4_put_open_state(state);
>  				spin_lock(&sp->so_lock);
>  				goto restart;

That looks correct to me. Applied.

Thanks Neil!
  Trond
-- 
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