From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Andreas Gruenbacher <agruenba@redhat.com>, Sasha Levin <sashal@kernel.org>, rpeterso@redhat.com, cluster-devel@redhat.com Subject: [PATCH AUTOSEL 5.15 09/27] gfs2: Disable page faults during lockless buffered reads Date: Wed, 6 Apr 2022 21:12:39 -0400 [thread overview] Message-ID: <20220407011257.114287-9-sashal@kernel.org> (raw) In-Reply-To: <20220407011257.114287-1-sashal@kernel.org> From: Andreas Gruenbacher <agruenba@redhat.com> [ Upstream commit 52f3f033a5dbd023307520af1ff551cadfd7f037 ] During lockless buffered reads, filemap_read() holds page cache page references while trying to copy data to the user-space buffer. The calling process isn't holding the inode glock, but the page references it holds prevent those pages from being removed from the page cache, and that prevents the underlying inode glock from being moved to another node. Thus, we can end up in the same kinds of distributed deadlock situations as with normal (non-lockless) buffered reads. Fix that by disabling page faults during lockless reads as well. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- fs/gfs2/file.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c index f6d3b3e13d72..c39c102f5005 100644 --- a/fs/gfs2/file.c +++ b/fs/gfs2/file.c @@ -850,14 +850,16 @@ static ssize_t gfs2_file_read_iter(struct kiocb *iocb, struct iov_iter *to) return ret; iocb->ki_flags &= ~IOCB_DIRECT; } + pagefault_disable(); iocb->ki_flags |= IOCB_NOIO; ret = generic_file_read_iter(iocb, to); iocb->ki_flags &= ~IOCB_NOIO; + pagefault_enable(); if (ret >= 0) { if (!iov_iter_count(to)) return ret; written = ret; - } else { + } else if (ret != -EFAULT) { if (ret != -EAGAIN) return ret; if (iocb->ki_flags & IOCB_NOWAIT) -- 2.35.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org> To: cluster-devel.redhat.com Subject: [Cluster-devel] [PATCH AUTOSEL 5.15 09/27] gfs2: Disable page faults during lockless buffered reads Date: Wed, 6 Apr 2022 21:12:39 -0400 [thread overview] Message-ID: <20220407011257.114287-9-sashal@kernel.org> (raw) In-Reply-To: <20220407011257.114287-1-sashal@kernel.org> A non-text attachment was scrubbed... Name: not available Type: application/octet-stream Size: 1476 bytes Desc: not available URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20220406/dbf33f90/attachment.obj>
next prev parent reply other threads:[~2022-04-07 1:21 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-04-07 1:12 [PATCH AUTOSEL 5.15 01/27] gfs2: assign rgrp glock before compute_bitstructs Sasha Levin 2022-04-07 1:12 ` [Cluster-devel] " Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 02/27] rtc: fix use-after-free on device removal Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 03/27] rtc: pcf2127: fix bug when reading alarm registers Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 04/27] um: Cleanup syscall_handler_t definition/cast, fix warning Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 05/27] um: port_user: Improve error handling when port-helper is not found Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 06/27] Input: add bounds checking to input_set_capability() Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 07/27] Input: stmfts - fix reference leak in stmfts_input_open Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 08/27] nvme-pci: add quirks for Samsung X5 SSDs Sasha Levin 2022-04-07 1:12 ` Sasha Levin [this message] 2022-04-07 1:12 ` [Cluster-devel] [PATCH AUTOSEL 5.15 09/27] gfs2: Disable page faults during lockless buffered reads Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 10/27] rtc: sun6i: Fix time overflow handling Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 11/27] crypto: stm32 - fix reference leak in stm32_crc_remove Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 12/27] crypto: x86/chacha20 - Avoid spurious jumps to other functions Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 13/27] ALSA: hda/realtek: Enable headset mic on Lenovo P360 Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 14/27] s390/traps: improve panic message for translation-specification exception Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 15/27] s390/pci: improve zpci_dev reference counting Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 16/27] vhost_vdpa: don't setup irq offloading when irq_num < 0 Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 17/27] tools/virtio: compile with -pthread Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 18/27] nvmet: use a private workqueue instead of the system workqueue Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 19/27] nvme-multipath: fix hang when disk goes live over reconnect Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 20/27] rtc: mc146818-lib: Fix the AltCentury for AMD platforms Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 21/27] fs: fix an infinite loop in iomap_fiemap Sasha Levin 2022-04-07 11:28 ` Amir Goldstein 2022-04-07 11:30 ` Amir Goldstein 2022-05-17 17:33 ` Amir Goldstein 2022-05-18 12:24 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 22/27] MIPS: lantiq: check the return value of kzalloc() Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 23/27] drbd: remove usage of list iterator variable after loop Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 24/27] platform/chrome: cros_ec_debugfs: detach log reader wq from devm Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 25/27] ARM: 9191/1: arm/stacktrace, kasan: Silence KASAN warnings in unwind_frame() Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 26/27] nilfs2: fix lockdep warnings in page operations for btree nodes Sasha Levin 2022-04-07 1:12 ` Sasha Levin 2022-04-07 1:12 ` [PATCH AUTOSEL 5.15 27/27] nilfs2: fix lockdep warnings during disk space reclamation Sasha Levin 2022-04-07 1:12 ` Sasha Levin
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=20220407011257.114287-9-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=agruenba@redhat.com \ --cc=cluster-devel@redhat.com \ --cc=linux-kernel@vger.kernel.org \ --cc=rpeterso@redhat.com \ --cc=stable@vger.kernel.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.