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

Commit fecdf72f authored by Trond Myklebust's avatar Trond Myklebust Committed by Greg Kroah-Hartman
Browse files

pNFS: Ensure we do clear the return-on-close layout stateid on fatal errors



[ Upstream commit 9c47b18cf722184f32148784189fca945a7d0561 ]

IF the server rejected our layout return with a state error such as
NFS4ERR_BAD_STATEID, or even a stale inode error, then we do want
to clear out all the remaining layout segments and mark that stateid
as invalid.

Fixes: 1c5bd76d ("pNFS: Enable layoutreturn operation for...")
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent cc376abf
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -1319,10 +1319,15 @@ void pnfs_roc_release(struct nfs4_layoutreturn_args *args,
	const nfs4_stateid *res_stateid = NULL;
	struct nfs4_xdr_opaque_data *ld_private = args->ld_private;

	if (ret == 0) {
		arg_stateid = &args->stateid;
	switch (ret) {
	case -NFS4ERR_NOMATCHING_LAYOUT:
		break;
	case 0:
		if (res->lrs_present)
			res_stateid = &res->stateid;
		/* Fallthrough */
	default:
		arg_stateid = &args->stateid;
	}
	pnfs_layoutreturn_free_lsegs(lo, arg_stateid, &args->range,
			res_stateid);