Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1c06f80 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4.1/pnfs: Remove redundant check in pnfs_layoutgets_blocked()



layoutget now should already be serialised w.r.t. layout returns

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent 2d8ae84f
Loading
Loading
Loading
Loading
+5 −21
Original line number Diff line number Diff line
@@ -816,23 +816,12 @@ pnfs_layout_stateid_blocked(const struct pnfs_layout_hdr *lo,
	return !pnfs_seqid_is_newer(seqid, lo->plh_barrier);
}

static bool
pnfs_layout_returning(const struct pnfs_layout_hdr *lo,
		      struct pnfs_layout_range *range)
{
	return test_bit(NFS_LAYOUT_RETURN, &lo->plh_flags) &&
		(lo->plh_return_iomode == IOMODE_ANY ||
		 lo->plh_return_iomode == range->iomode);
}

/* lget is set to 1 if called from inside send_layoutget call chain */
static bool
pnfs_layoutgets_blocked(const struct pnfs_layout_hdr *lo,
			struct pnfs_layout_range *range)
pnfs_layoutgets_blocked(const struct pnfs_layout_hdr *lo)
{
	return lo->plh_block_lgets ||
		test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags) ||
		pnfs_layout_returning(lo, range);
		test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags);
}

int
@@ -844,7 +833,7 @@ pnfs_choose_layoutget_stateid(nfs4_stateid *dst, struct pnfs_layout_hdr *lo,

	dprintk("--> %s\n", __func__);
	spin_lock(&lo->plh_inode->i_lock);
	if (pnfs_layoutgets_blocked(lo, range)) {
	if (pnfs_layoutgets_blocked(lo)) {
		status = -EAGAIN;
	} else if (!nfs4_valid_open_stateid(open_state)) {
		status = -EBADF;
@@ -1546,7 +1535,7 @@ pnfs_update_layout(struct inode *ino,
		goto out_put_layout_hdr;
	}

	if (pnfs_layoutgets_blocked(lo, &arg))
	if (pnfs_layoutgets_blocked(lo))
		goto out_unlock;
	atomic_inc(&lo->plh_outstanding);
	spin_unlock(&ino->i_lock);
@@ -1618,12 +1607,7 @@ pnfs_layout_process(struct nfs4_layoutget *lgp)
	lseg->pls_range = res->range;

	spin_lock(&ino->i_lock);
	if (test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags)) {
		dprintk("%s forget reply due to recall\n", __func__);
		goto out_forget_reply;
	}

	if (pnfs_layoutgets_blocked(lo, &lgp->args.range)) {
	if (pnfs_layoutgets_blocked(lo)) {
		dprintk("%s forget reply due to state\n", __func__);
		goto out_forget_reply;
	}