From 2a974425e57fb882c93709c6072bf66d04431635 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sun, 20 Nov 2016 13:13:54 -0500 Subject: NFSv4: Ignore LAYOUTRETURN result if the layout doesn't match or is invalid Fix a potential race with CB_LAYOUTRECALL in which the server recalls the remaining layout segments while our LAYOUTRETURN is still in transit. Signed-off-by: Trond Myklebust --- fs/nfs/nfs4proc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'fs/nfs/nfs4proc.c') diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 561b21e4a930..87972cfa62bc 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -8574,8 +8574,7 @@ static void nfs4_layoutreturn_release(void *calldata) struct pnfs_layout_hdr *lo = lrp->args.layout; dprintk("--> %s\n", __func__); - pnfs_layoutreturn_free_lsegs(lo, &lrp->args.range, - be32_to_cpu(lrp->args.stateid.seqid), + pnfs_layoutreturn_free_lsegs(lo, &lrp->args.stateid, &lrp->args.range, lrp->res.lrs_present ? &lrp->res.stateid : NULL); nfs4_sequence_free_slot(&lrp->res.seq_res); pnfs_put_layout_hdr(lrp->args.layout); -- cgit v1.2.3