diff options
-rw-r--r-- | fs/nfs/nfs4proc.c | 2 | ||||
-rw-r--r-- | fs/nfs/nfs4state.c | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 31ce758d53d5..f1f087b483ce 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -1808,6 +1808,8 @@ int nfs4_do_close(struct path *path, struct nfs4_state *state, int wait) | |||
1808 | calldata->state = state; | 1808 | calldata->state = state; |
1809 | calldata->arg.fh = NFS_FH(state->inode); | 1809 | calldata->arg.fh = NFS_FH(state->inode); |
1810 | calldata->arg.stateid = &state->open_stateid; | 1810 | calldata->arg.stateid = &state->open_stateid; |
1811 | if (nfs4_has_session(server->nfs_client)) | ||
1812 | memset(calldata->arg.stateid->data, 0, 4); /* clear seqid */ | ||
1811 | /* Serialization for the sequence id */ | 1813 | /* Serialization for the sequence id */ |
1812 | calldata->arg.seqid = nfs_alloc_seqid(&state->owner->so_seqid); | 1814 | calldata->arg.seqid = nfs_alloc_seqid(&state->owner->so_seqid); |
1813 | if (calldata->arg.seqid == NULL) | 1815 | if (calldata->arg.seqid == NULL) |
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 2cc0aca96eb2..2cfca9929c9a 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c | |||
@@ -742,12 +742,14 @@ static void nfs_increment_seqid(int status, struct nfs_seqid *seqid) | |||
742 | 742 | ||
743 | void nfs_increment_open_seqid(int status, struct nfs_seqid *seqid) | 743 | void nfs_increment_open_seqid(int status, struct nfs_seqid *seqid) |
744 | { | 744 | { |
745 | if (status == -NFS4ERR_BAD_SEQID) { | 745 | struct nfs4_state_owner *sp = container_of(seqid->sequence, |
746 | struct nfs4_state_owner *sp = container_of(seqid->sequence, | 746 | struct nfs4_state_owner, so_seqid); |
747 | struct nfs4_state_owner, so_seqid); | 747 | struct nfs_server *server = sp->so_server; |
748 | |||
749 | if (status == -NFS4ERR_BAD_SEQID) | ||
748 | nfs4_drop_state_owner(sp); | 750 | nfs4_drop_state_owner(sp); |
749 | } | 751 | if (!nfs4_has_session(server->nfs_client)) |
750 | nfs_increment_seqid(status, seqid); | 752 | nfs_increment_seqid(status, seqid); |
751 | } | 753 | } |
752 | 754 | ||
753 | /* | 755 | /* |