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 d2ae413c986..b60fddf606f 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -5950,6 +5950,7 @@ static void nfs4_layoutcommit_release(void *calldata)  {  	struct nfs4_layoutcommit_data *data = calldata;  	struct pnfs_layout_segment *lseg, *tmp; +	unsigned long *bitlock = &NFS_I(data->args.inode)->flags;  	pnfs_cleanup_layoutcommit(data);  	/* Matched by references in pnfs_set_layoutcommit */ @@ -5959,6 +5960,11 @@ static void nfs4_layoutcommit_release(void *calldata)  				       &lseg->pls_flags))  			put_lseg(lseg);  	} + +	clear_bit_unlock(NFS_INO_LAYOUTCOMMITTING, bitlock); +	smp_mb__after_clear_bit(); +	wake_up_bit(bitlock, NFS_INO_LAYOUTCOMMITTING); +  	put_rpccred(data->cred);  	kfree(data);  }  |