linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	Trond Myklebust <trond.myklebust@hammerspace.com>
Subject: [PATCH 5.4 56/76] pNFS: We want return-on-close to complete when evicting the inode
Date: Mon, 18 Jan 2021 12:34:56 +0100	[thread overview]
Message-ID: <20210118113343.662876284@linuxfoundation.org> (raw)
In-Reply-To: <20210118113340.984217512@linuxfoundation.org>

From: Trond Myklebust <trond.myklebust@hammerspace.com>

commit 078000d02d57f02dde61de4901f289672e98c8bc upstream.

If the inode is being evicted, it should be safe to run return-on-close,
so we should do it to ensure we don't inadvertently leak layout segments.

Fixes: 1c5bd76d17cc ("pNFS: Enable layoutreturn operation for return-on-close")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/nfs/nfs4proc.c |   26 ++++++++++----------------
 fs/nfs/pnfs.c     |    8 +++-----
 fs/nfs/pnfs.h     |    8 +++-----
 3 files changed, 16 insertions(+), 26 deletions(-)

--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3488,10 +3488,8 @@ static void nfs4_close_done(struct rpc_t
 	trace_nfs4_close(state, &calldata->arg, &calldata->res, task->tk_status);
 
 	/* Handle Layoutreturn errors */
-	if (pnfs_roc_done(task, calldata->inode,
-				&calldata->arg.lr_args,
-				&calldata->res.lr_res,
-				&calldata->res.lr_ret) == -EAGAIN)
+	if (pnfs_roc_done(task, &calldata->arg.lr_args, &calldata->res.lr_res,
+			  &calldata->res.lr_ret) == -EAGAIN)
 		goto out_restart;
 
 	/* hmm. we are done with the inode, and in the process of freeing
@@ -6238,10 +6236,8 @@ static void nfs4_delegreturn_done(struct
 	trace_nfs4_delegreturn_exit(&data->args, &data->res, task->tk_status);
 
 	/* Handle Layoutreturn errors */
-	if (pnfs_roc_done(task, data->inode,
-				&data->args.lr_args,
-				&data->res.lr_res,
-				&data->res.lr_ret) == -EAGAIN)
+	if (pnfs_roc_done(task, &data->args.lr_args, &data->res.lr_res,
+			  &data->res.lr_ret) == -EAGAIN)
 		goto out_restart;
 
 	switch (task->tk_status) {
@@ -6290,10 +6286,10 @@ static void nfs4_delegreturn_release(voi
 	struct nfs4_delegreturndata *data = calldata;
 	struct inode *inode = data->inode;
 
+	if (data->lr.roc)
+		pnfs_roc_release(&data->lr.arg, &data->lr.res,
+				 data->res.lr_ret);
 	if (inode) {
-		if (data->lr.roc)
-			pnfs_roc_release(&data->lr.arg, &data->lr.res,
-					data->res.lr_ret);
 		nfs_post_op_update_inode_force_wcc(inode, &data->fattr);
 		nfs_iput_and_deactive(inode);
 	}
@@ -6368,16 +6364,14 @@ static int _nfs4_proc_delegreturn(struct
 	nfs_fattr_init(data->res.fattr);
 	data->timestamp = jiffies;
 	data->rpc_status = 0;
-	data->lr.roc = pnfs_roc(inode, &data->lr.arg, &data->lr.res, cred);
 	data->inode = nfs_igrab_and_active(inode);
-	if (data->inode) {
+	if (data->inode || issync) {
+		data->lr.roc = pnfs_roc(inode, &data->lr.arg, &data->lr.res,
+					cred);
 		if (data->lr.roc) {
 			data->args.lr_args = &data->lr.arg;
 			data->res.lr_res = &data->lr.res;
 		}
-	} else if (data->lr.roc) {
-		pnfs_roc_release(&data->lr.arg, &data->lr.res, 0);
-		data->lr.roc = false;
 	}
 
 	task_setup_data.callback_data = data;
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -1475,10 +1475,8 @@ out_noroc:
 	return false;
 }
 
-int pnfs_roc_done(struct rpc_task *task, struct inode *inode,
-		struct nfs4_layoutreturn_args **argpp,
-		struct nfs4_layoutreturn_res **respp,
-		int *ret)
+int pnfs_roc_done(struct rpc_task *task, struct nfs4_layoutreturn_args **argpp,
+		  struct nfs4_layoutreturn_res **respp, int *ret)
 {
 	struct nfs4_layoutreturn_args *arg = *argpp;
 	int retval = -EAGAIN;
@@ -1511,7 +1509,7 @@ int pnfs_roc_done(struct rpc_task *task,
 		return 0;
 	case -NFS4ERR_OLD_STATEID:
 		if (!nfs4_layout_refresh_old_stateid(&arg->stateid,
-					&arg->range, inode))
+						     &arg->range, arg->inode))
 			break;
 		*ret = -NFS4ERR_NOMATCHING_LAYOUT;
 		return -EAGAIN;
--- a/fs/nfs/pnfs.h
+++ b/fs/nfs/pnfs.h
@@ -283,10 +283,8 @@ bool pnfs_roc(struct inode *ino,
 		struct nfs4_layoutreturn_args *args,
 		struct nfs4_layoutreturn_res *res,
 		const struct cred *cred);
-int pnfs_roc_done(struct rpc_task *task, struct inode *inode,
-		struct nfs4_layoutreturn_args **argpp,
-		struct nfs4_layoutreturn_res **respp,
-		int *ret);
+int pnfs_roc_done(struct rpc_task *task, struct nfs4_layoutreturn_args **argpp,
+		  struct nfs4_layoutreturn_res **respp, int *ret);
 void pnfs_roc_release(struct nfs4_layoutreturn_args *args,
 		struct nfs4_layoutreturn_res *res,
 		int ret);
@@ -711,7 +709,7 @@ pnfs_roc(struct inode *ino,
 }
 
 static inline int
-pnfs_roc_done(struct rpc_task *task, struct inode *inode,
+pnfs_roc_done(struct rpc_task *task,
 		struct nfs4_layoutreturn_args **argpp,
 		struct nfs4_layoutreturn_res **respp,
 		int *ret)



  parent reply	other threads:[~2021-01-18 18:46 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-18 11:34 [PATCH 5.4 00/76] 5.4.91-rc1 review Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 01/76] kbuild: enforce -Werror=return-type Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 02/76] btrfs: prevent NULL pointer dereference in extent_io_tree_panic Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 03/76] ASoC: dapm: remove widget from dirty list on free Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 04/76] x86/hyperv: check cpu mask after interrupt has been disabled Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 05/76] tracing/kprobes: Do the notrace functions check without kprobes on ftrace Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 06/76] mips: fix Section mismatch in reference Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 07/76] mips: lib: uncached: fix non-standard usage of variable sp Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 08/76] MIPS: boot: Fix unaligned access with CONFIG_MIPS_RAW_APPENDED_DTB Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 09/76] MIPS: Fix malformed NT_FILE and NT_SIGINFO in 32bit coredumps Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 10/76] MIPS: relocatable: fix possible boot hangup with KASLR enabled Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 11/76] RDMA/ocrdma: Fix use after free in ocrdma_dealloc_ucontext_pd() Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 12/76] ACPI: scan: Harden acpi_device_add() against device ID overflows Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 13/76] mm/hugetlb: fix potential missing huge page size info Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 14/76] dm raid: fix discard limits for raid1 Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 15/76] dm snapshot: flush merged data before committing metadata Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 16/76] dm integrity: fix the maximum number of arguments Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 17/76] r8152: Add Lenovo Powered USB-C Travel Hub Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 18/76] btrfs: tree-checker: check if chunk item end overflows Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 19/76] drm/i915/backlight: fix CPU mode backlight takeover on LPT Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 20/76] ext4: fix bug for rename with RENAME_WHITEOUT Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 21/76] ext4: dont leak old mountpoint samples Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 22/76] smb3: remove unused flag passed into close functions Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 23/76] cifs: fix interrupted close commands Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 24/76] dm integrity: fix flush with external metadata device Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 25/76] ARC: build: remove non-existing bootpImage from KBUILD_IMAGE Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 26/76] ARC: build: add uImage.lzma to the top-level target Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 27/76] ARC: build: add boot_targets to PHONY Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 28/76] ARC: build: move symlink creation to arch/arc/Makefile to avoid race Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 29/76] netfilter: ipset: fixes possible oops in mtype_resize Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 30/76] btrfs: fix transaction leak and crash after RO remount caused by qgroup rescan Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 31/76] regulator: bd718x7: Add enable times Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 32/76] ethernet: ucc_geth: fix definition and size of ucc_geth_tx_global_pram Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 33/76] habanalabs: register to pci shutdown callback Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 34/76] habanalabs: Fix memleak in hl_device_reset Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 35/76] hwmon: (pwm-fan) Ensure that calculation doesnt discard big period values Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 36/76] lib/raid6: Let $(UNROLL) rules work with macOS userland Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 37/76] bfq: Fix computation of shallow depth Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 38/76] arch/arc: add copy_user_page() to <asm/page.h> to fix build error on ARC Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 39/76] misdn: dsp: select CONFIG_BITREVERSE Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 40/76] net: ethernet: fs_enet: Add missing MODULE_LICENSE Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 41/76] selftests: fix the return value for UDP GRO test Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 42/76] nvme-pci: mark Samsung PM1725a as IGNORE_DEV_SUBNQN Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 43/76] nvmet-rdma: Fix list_del corruption on queue establishment failure Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 44/76] drm/amdgpu: fix a GPU hang issue when remove device Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 45/76] usb: typec: Fix copy paste error for NVIDIA alt-mode description Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 46/76] ACPI: scan: add stub acpi_create_platform_device() for !CONFIG_ACPI Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 47/76] drm/msm: Call msm_init_vram before binding the gpu Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 48/76] ARM: picoxcell: fix missing interrupt-parent properties Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 49/76] perf intel-pt: Fix CPU too large error Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 50/76] dump_common_audit_data(): fix racy accesses to ->d_name Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 51/76] ASoC: meson: axg-tdm-interface: fix loopback Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 52/76] ASoC: meson: axg-tdmin: fix axg skew offset Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 53/76] ASoC: Intel: fix error code cnl_set_dsp_D0() Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 54/76] nvme-tcp: fix possible data corruption with bio merges Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 55/76] NFS4: Fix use-after-free in trace_event_raw_event_nfs4_set_lock Greg Kroah-Hartman
2021-01-18 11:34 ` Greg Kroah-Hartman [this message]
2021-01-18 11:34 ` [PATCH 5.4 57/76] pNFS: Mark layout for return if return-on-close was not sent Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 58/76] pNFS: Stricter ordering of layoutget and layoutreturn Greg Kroah-Hartman
2021-01-18 11:34 ` [PATCH 5.4 59/76] NFS/pNFS: Fix a leak of the layout plh_outstanding counter Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 60/76] NFS: nfs_igrab_and_active must first reference the superblock Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 61/76] ext4: fix superblock checksum failure when setting password salt Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 62/76] RDMA/restrack: Dont treat as an error allocation ID wrapping Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 63/76] RDMA/usnic: Fix memleak in find_free_vf_and_create_qp_grp Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 64/76] bnxt_en: Improve stats context resource accounting with RDMA driver loaded Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 65/76] RDMA/mlx5: Fix wrong free of blue flame register on error Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 66/76] IB/mlx5: Fix error unwinding when set_has_smi_cap fails Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 67/76] drm/i915/dsi: Use unconditional msleep for the panel_on_delay when there is no reset-deassert MIPI-sequence Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 68/76] mm, slub: consider rest of partial list if acquire_slab() fails Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 69/76] iommu/vt-d: Fix unaligned addresses for intel_flush_svm_range_dev() Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 70/76] net: sunrpc: interpret the return value of kstrtou32 correctly Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 71/76] dm: eliminate potential source of excessive kernel log noise Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 72/76] ALSA: fireface: Fix integer overflow in transmit_midi_msg() Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 73/76] ALSA: firewire-tascam: Fix integer overflow in midi_port_work() Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 74/76] netfilter: conntrack: fix reading nf_conntrack_buckets Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 75/76] netfilter: nf_nat: Fix memleak in nf_nat_init Greg Kroah-Hartman
2021-01-18 11:35 ` [PATCH 5.4 76/76] netfilter: nft_compat: remove flush counter optimization Greg Kroah-Hartman
2021-01-18 14:43 ` [PATCH 5.4 00/76] 5.4.91-rc1 review Naresh Kamboju
2021-01-18 15:53   ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210118113343.662876284@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=trond.myklebust@hammerspace.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).