Re: [PATCH 03/14] NFS: State reclaim clears OPEN and LOCK state

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

 



On Jul 9, 2012, at 4:15 PM, Chuck Lever wrote:

> 
> On Jul 9, 2012, at 4:03 PM, Myklebust, Trond wrote:
> 
>> On Mon, 2012-07-09 at 11:44 -0400, Chuck Lever wrote:
>>> Before beginning state recovery, the state manager zaps open and lock
>>> state for each open file, thus the "state->flags & flags" test in
>>> nfs41_{open,lock}_expired() always fails during reclaim.  But open
>>> recovery is still needed for these files.
>>> 
>>> To force a call to nfs4_open_expired(), change the default return
>>> value for nfs41_check_expired_stateid() to force open recovery, and
>>> the default return value for nfs41_check_locks() to force lock
>>> recovery, if the requested flags are clear.  Fix suggested by Bryan
>>> Schumaker.
>> 
>> This makes absolutely no sense...
>> 
>> The point of these function should be to test if the stateid is still
>> valid. If it is, then we need no recovery.
>> If the stateid is _not_ valid, then we free it, and then decide if
>> recovery is needed. The only exception to that rule is if TEST_STATEID
>> returns NFS4ERR_BAD_STATEID, (in which case we don't need to free the
>> stateid but just recover immediately).
> 
> So you'd like to change the sense of the switch statement in my earlier patch:
> 
>   NFS4_OK:
>     do nothing
>   NFS4ERR_BAD_STATEID:
>     just open
>   default:
>     free the state ID, then open
> 
> I still don't think we need a FREE_STATEID call for NFS4ERR_EXPIRED, for example.  It seems to me the only cases where FREE_STATEID is needed is the _REVOKED cases.
> 
>> IOW: The state->flags and lsp->ls_flags tests should just be removed.
> 
> Bryan had a reason to leave those tests in, but I don't remember what it was.

Ah.

I think it was that if those flags are set, then the client assumes the server still has that state, thus no recovery actions should be done.

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com




--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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