On Fri, Oct 2, 2015 at 1:14 PM, Jeff Layton <jlayton@xxxxxxxxxxxxxxx> wrote: > When the client goes to return a delegation, it should always update any > nfs4_state currently set up to use that delegation stateid to instead > use the open stateid. It already does do this in some cases, > particularly in the state recovery code, but not currently when the > delegation is voluntarily returned (e.g. in advance of a RENAME). This > causes the client to try to continue using the delegation stateid after > the DELEGRETURN, e.g. in LAYOUTGET. > > Set the nfs4_state back to using the open stateid in > nfs4_open_delegation_recall, just before clearing the > NFS_DELEGATED_STATE bit. > > Signed-off-by: Jeff Layton <jeff.layton@xxxxxxxxxxxxxxx> > --- > fs/nfs/nfs4proc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c > index f93b9cdb4934..246753e1d19d 100644 > --- a/fs/nfs/nfs4proc.c > +++ b/fs/nfs/nfs4proc.c > @@ -1771,6 +1771,9 @@ int nfs4_open_delegation_recall(struct nfs_open_context *ctx, > if (IS_ERR(opendata)) > return PTR_ERR(opendata); > nfs4_stateid_copy(&opendata->o_arg.u.delegation, stateid); > + write_seqlock(&state->seqlock); > + nfs4_stateid_copy(&state->stateid, &state->open_stateid); > + write_sequnlock(&state->seqlock); > clear_bit(NFS_DELEGATED_STATE, &state->flags); > switch (type & (FMODE_READ|FMODE_WRITE)) { > case FMODE_READ|FMODE_WRITE: > -- Looks good. Thanks! -- 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