diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-07 13:49:12 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-07 13:49:12 -0500 |
commit | cf470c3e004efe16d73dc8ba9b29bdc9a5327cda (patch) | |
tree | 57f8f72ef5af7d33d760570bd8d78e9b0face719 /fs/nfs/nfs4_fs.h | |
parent | 9cb8196839ab4ec87710526e9c43ac7f5dba69d3 (diff) |
NFSv4: Don't free the nfs4_lock_state until after the release_lockowner
Otherwise we can end up with sequence id problems if the client reuses
the owner_id before the server has processed the release_lockowner
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4_fs.h')
-rw-r--r-- | fs/nfs/nfs4_fs.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h index 16373df96f9..026878cb269 100644 --- a/fs/nfs/nfs4_fs.h +++ b/fs/nfs/nfs4_fs.h | |||
@@ -213,7 +213,7 @@ extern int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait, boo | |||
213 | extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle); | 213 | extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle); |
214 | extern int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name, | 214 | extern int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name, |
215 | struct nfs4_fs_locations *fs_locations, struct page *page); | 215 | struct nfs4_fs_locations *fs_locations, struct page *page); |
216 | extern void nfs4_release_lockowner(const struct nfs4_lock_state *); | 216 | extern int nfs4_release_lockowner(struct nfs4_lock_state *); |
217 | extern const struct xattr_handler *nfs4_xattr_handlers[]; | 217 | extern const struct xattr_handler *nfs4_xattr_handlers[]; |
218 | 218 | ||
219 | #if defined(CONFIG_NFS_V4_1) | 219 | #if defined(CONFIG_NFS_V4_1) |
@@ -338,6 +338,8 @@ extern void nfs_increment_lock_seqid(int status, struct nfs_seqid *seqid); | |||
338 | extern void nfs_release_seqid(struct nfs_seqid *seqid); | 338 | extern void nfs_release_seqid(struct nfs_seqid *seqid); |
339 | extern void nfs_free_seqid(struct nfs_seqid *seqid); | 339 | extern void nfs_free_seqid(struct nfs_seqid *seqid); |
340 | 340 | ||
341 | extern void nfs4_free_lock_state(struct nfs4_lock_state *lsp); | ||
342 | |||
341 | extern const nfs4_stateid zero_stateid; | 343 | extern const nfs4_stateid zero_stateid; |
342 | 344 | ||
343 | /* nfs4xdr.c */ | 345 | /* nfs4xdr.c */ |