diff options
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index d2ae413c986a..b60fddf606f7 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -5950,6 +5950,7 @@ static void nfs4_layoutcommit_release(void *calldata) | |||
5950 | { | 5950 | { |
5951 | struct nfs4_layoutcommit_data *data = calldata; | 5951 | struct nfs4_layoutcommit_data *data = calldata; |
5952 | struct pnfs_layout_segment *lseg, *tmp; | 5952 | struct pnfs_layout_segment *lseg, *tmp; |
5953 | unsigned long *bitlock = &NFS_I(data->args.inode)->flags; | ||
5953 | 5954 | ||
5954 | pnfs_cleanup_layoutcommit(data); | 5955 | pnfs_cleanup_layoutcommit(data); |
5955 | /* Matched by references in pnfs_set_layoutcommit */ | 5956 | /* Matched by references in pnfs_set_layoutcommit */ |
@@ -5959,6 +5960,11 @@ static void nfs4_layoutcommit_release(void *calldata) | |||
5959 | &lseg->pls_flags)) | 5960 | &lseg->pls_flags)) |
5960 | put_lseg(lseg); | 5961 | put_lseg(lseg); |
5961 | } | 5962 | } |
5963 | |||
5964 | clear_bit_unlock(NFS_INO_LAYOUTCOMMITTING, bitlock); | ||
5965 | smp_mb__after_clear_bit(); | ||
5966 | wake_up_bit(bitlock, NFS_INO_LAYOUTCOMMITTING); | ||
5967 | |||
5962 | put_rpccred(data->cred); | 5968 | put_rpccred(data->cred); |
5963 | kfree(data); | 5969 | kfree(data); |
5964 | } | 5970 | } |