diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-07-04 08:19:21 -0700 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-07-04 08:19:21 -0700 | 
| commit | c318a821b9828ef3be97d5d896d146e7daa43c86 (patch) | |
| tree | 7ed40911ffebcbabf87ec4be692f6fb154053687 /fs/nfs/pnfs.c | |
| parent | 322832f2f19e04c866a0ce4bdac8cff8e695f2b3 (diff) | |
| parent | a99cde438de0c4c0cecc1d1af1a55a75b10bfdef (diff) | |
Merge 4.7-rc6 into usb-next
We want the USB fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/nfs/pnfs.c')
| -rw-r--r-- | fs/nfs/pnfs.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c index 0c7e0d45a4de..0fbe734cc38c 100644 --- a/fs/nfs/pnfs.c +++ b/fs/nfs/pnfs.c @@ -361,8 +361,10 @@ pnfs_layout_remove_lseg(struct pnfs_layout_hdr *lo,  	list_del_init(&lseg->pls_list);  	/* Matched by pnfs_get_layout_hdr in pnfs_layout_insert_lseg */  	atomic_dec(&lo->plh_refcount); -	if (list_empty(&lo->plh_segs)) +	if (list_empty(&lo->plh_segs)) { +		set_bit(NFS_LAYOUT_INVALID_STID, &lo->plh_flags);  		clear_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags); +	}  	rpc_wake_up(&NFS_SERVER(inode)->roc_rpcwaitq);  } @@ -1290,6 +1292,7 @@ alloc_init_layout_hdr(struct inode *ino,  	INIT_LIST_HEAD(&lo->plh_bulk_destroy);  	lo->plh_inode = ino;  	lo->plh_lc_cred = get_rpccred(ctx->cred); +	lo->plh_flags |= 1 << NFS_LAYOUT_INVALID_STID;  	return lo;  } @@ -1297,6 +1300,8 @@ static struct pnfs_layout_hdr *  pnfs_find_alloc_layout(struct inode *ino,  		       struct nfs_open_context *ctx,  		       gfp_t gfp_flags) +	__releases(&ino->i_lock) +	__acquires(&ino->i_lock)  {  	struct nfs_inode *nfsi = NFS_I(ino);  	struct pnfs_layout_hdr *new = NULL; @@ -1565,8 +1570,7 @@ lookup_again:  	 * stateid, or it has been invalidated, then we must use the open  	 * stateid.  	 */ -	if (lo->plh_stateid.seqid == 0 || -	    test_bit(NFS_LAYOUT_INVALID_STID, &lo->plh_flags)) { +	if (test_bit(NFS_LAYOUT_INVALID_STID, &lo->plh_flags)) {  		/*  		 * The first layoutget for the file. Need to serialize per  | 
