Re: [PATCH 1/1] Fixing lease renewal

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

 



On Wed, Sep 24, 2014 at 4:11 PM, Trond Myklebust
<trond.myklebust@xxxxxxxxxxxxxxx> wrote:
> On Wed, Sep 24, 2014 at 2:29 PM, Olga Kornievskaia <aglo@xxxxxxxxx> wrote:
>> Before I go ahead with the change, does it make sense to move "both"
>> of the migration sections NFS4CLNT_MOVED and NFS4CLNT_LEASE_MOVED
>> before the check lease section?
>
> Actually. Never mind. Thinking about this, and looking at the code, we
> definitely do want to ensure that lease recovery is performed before
> migration recovery.
> Let's just put the 'continue;' back into the CHECK_LEASE section for
> now so that we enforce that.
>

Ok. Another one submitted.

>> On Wed, Sep 24, 2014 at 2:05 PM, Trond Myklebust
>> <trond.myklebust@xxxxxxxxxxxxxxx> wrote:
>>> Hi Olga,
>>>
>>> On Wed, Sep 24, 2014 at 12:08 PM, Olga Kornievskaia <kolga@xxxxxxxxxx> wrote:
>>>> Commit c9fdeb28 removed a 'continue' after checking if the lease needs
>>>> to be renewed. However, if client hasn't moved, the code falls down to
>>>> starting reboot recovery erroneously (ie., sends open reclaim and gets
>>>> back stale_clientid error) before recovering from getting stale_clientid
>>>> on the renew operation.
>>>>
>>>> Signed-off-by: Olga Kornievskaia <kolga@xxxxxxxxxx>
>>>> ---
>>>>  fs/nfs/nfs4state.c | 4 +++-
>>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
>>>> index 22fe351..4616598 100644
>>>> --- a/fs/nfs/nfs4state.c
>>>> +++ b/fs/nfs/nfs4state.c
>>>> @@ -2340,11 +2340,13 @@ static void nfs4_state_manager(struct nfs_client *clp)
>>>>                         continue;
>>>>                 }
>>>>
>>>> -               if (test_and_clear_bit(NFS4CLNT_CHECK_LEASE, &clp->cl_state)) {
>>>> +               if (!test_bit(NFS4CLNT_MOVED, &clp->cl_state) &&
>>>> +                    test_and_clear_bit(NFS4CLNT_CHECK_LEASE, &clp->cl_state)) {
>>>>                         section = "check lease";
>>>>                         status = nfs4_check_lease(clp);
>>>>                         if (status < 0)
>>>>                                 goto out_error;
>>>> +                       continue;
>>>>                 }
>>>>
>>>>                 if (test_and_clear_bit(NFS4CLNT_MOVED, &clp->cl_state)) {
>>>> --
>>>> 1.8.5.2 (Apple Git-48)
>>>>
>>>
>>> I think you misunderstood me. I was proposing that we move the entire
>>> code section that currently reads
>>>
>>>                 if (test_and_clear_bit(NFS4CLNT_MOVED, &clp->cl_state)) {
>>>                         section = "migration";
>>>                         status = nfs4_handle_migration(clp);
>>>                         if (status < 0)
>>>                                 goto out_error;
>>>                 }
>>>
>>> so that it occurs before the section
>>>
>>>                 if (test_and_clear_bit(NFS4CLNT_CHECK_LEASE, &clp->cl_state)) {
>>>                         section = "check lease";
>>>                         status = nfs4_check_lease(clp);
>>>                         if (status < 0)
>>>                                 goto out_error;
>>> +                      continue;
>>>                 }
>>>
>>> That way we only need to test once for NFS4CLNT_MOVED.
>>>
>>> Cheers
>>>   Trond
>>> --
>>> Trond Myklebust
>>>
>>> Linux NFS client maintainer, PrimaryData
>>>
>>> trond.myklebust@xxxxxxxxxxxxxxx
>>> --
>>> 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
>
>
>
> --
> Trond Myklebust
>
> Linux NFS client maintainer, PrimaryData
>
> trond.myklebust@xxxxxxxxxxxxxxx
--
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