diff mbox

Grace period NEVER ends

Message ID 20110812143228.GD16960@pad.fieldses.org (mailing list archive)
State New, archived
Headers show

Commit Message

Bruce Fields Aug. 12, 2011, 2:32 p.m. UTC
On Fri, Aug 12, 2011 at 10:08:03AM -0400, Casey Bodley wrote:
> On Thu, Aug 11, 2011 at 10:15 PM, J. Bruce Fields <bfields@redhat.com> wrote:
> > On Thu, Aug 11, 2011 at 06:29:20PM -0700, Boaz Harrosh wrote:
> >> With this patch I'm back to the previous behavior. That is
> >> wait your grace period then continue.
> >
> > Is it true for some reason that the client never sends RECLAIM_COMPLETE?
> 
> I tested this yesterday with the windows client and saw the same
> never-ending grace period on OPEN.  We do send RECLAIM_COMPLETE, and
> it completes successfully.  Other operations like CREATE and REMOVE
> succeed as well.

Argh.  Does this help?

Unfortunately, this doesn't explain Malcolm Locke's problem, as it's 4.1
specific.

--b.

commit d43b4d070a24edcbe5f5e9ffcf7a33bbeccdd47d
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Fri Aug 12 10:27:18 2011 -0400

    nfsd4: fix failure to end nfsd4 grace period
    
    Even if we fail to write a recovery record to stable storage, we should
    still mark the client as having acquired its first state.  Otherwise we
    leave 4.1 clients with indefinite ERR_GRACE returns.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>

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

Comments

Casey Bodley Aug. 12, 2011, 7:30 p.m. UTC | #1
On Fri, Aug 12, 2011 at 10:32 AM, J. Bruce Fields <bfields@redhat.com> wrote:
> On Fri, Aug 12, 2011 at 10:08:03AM -0400, Casey Bodley wrote:
>> On Thu, Aug 11, 2011 at 10:15 PM, J. Bruce Fields <bfields@redhat.com> wrote:
>> > On Thu, Aug 11, 2011 at 06:29:20PM -0700, Boaz Harrosh wrote:
>> >> With this patch I'm back to the previous behavior. That is
>> >> wait your grace period then continue.
>> >
>> > Is it true for some reason that the client never sends RECLAIM_COMPLETE?
>>
>> I tested this yesterday with the windows client and saw the same
>> never-ending grace period on OPEN.  We do send RECLAIM_COMPLETE, and
>> it completes successfully.  Other operations like CREATE and REMOVE
>> succeed as well.
>
> Argh.  Does this help?

Bruce, I've not been able to reproduce since applying this patch.

>
> Unfortunately, this doesn't explain Malcolm Locke's problem, as it's 4.1
> specific.
>
> --b.
>
> commit d43b4d070a24edcbe5f5e9ffcf7a33bbeccdd47d
> Author: J. Bruce Fields <bfields@redhat.com>
> Date:   Fri Aug 12 10:27:18 2011 -0400
>
>    nfsd4: fix failure to end nfsd4 grace period
>
>    Even if we fail to write a recovery record to stable storage, we should
>    still mark the client as having acquired its first state.  Otherwise we
>    leave 4.1 clients with indefinite ERR_GRACE returns.
>
>    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
>
> diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
> index 29d77f6..4c7537d 100644
> --- a/fs/nfsd/nfs4recover.c
> +++ b/fs/nfsd/nfs4recover.c
> @@ -156,10 +156,9 @@ out_put:
>        dput(dentry);
>  out_unlock:
>        mutex_unlock(&dir->d_inode->i_mutex);
> -       if (status == 0) {
> -               clp->cl_firststate = 1;
> +       if (status == 0)
>                vfs_fsync(rec_file, 0);
> -       }
> +       clp->cl_firststate = 1;
>        nfs4_reset_creds(original_cred);
>        dprintk("NFSD: nfsd4_create_clid_dir returns %d\n", status);
>        return status;
>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
index 29d77f6..4c7537d 100644
--- a/fs/nfsd/nfs4recover.c
+++ b/fs/nfsd/nfs4recover.c
@@ -156,10 +156,9 @@  out_put:
 	dput(dentry);
 out_unlock:
 	mutex_unlock(&dir->d_inode->i_mutex);
-	if (status == 0) {
-		clp->cl_firststate = 1;
+	if (status == 0)
 		vfs_fsync(rec_file, 0);
-	}
+	clp->cl_firststate = 1;
 	nfs4_reset_creds(original_cred);
 	dprintk("NFSD: nfsd4_create_clid_dir returns %d\n", status);
 	return status;