From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 866F0C433F5 for ; Mon, 24 Jan 2022 13:29:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D9EE46B007B; Mon, 24 Jan 2022 08:29:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D4EBF6B007D; Mon, 24 Jan 2022 08:29:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C65D76B0081; Mon, 24 Jan 2022 08:29:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0159.hostedemail.com [216.40.44.159]) by kanga.kvack.org (Postfix) with ESMTP id B59226B007B for ; Mon, 24 Jan 2022 08:29:53 -0500 (EST) Received: from smtpin24.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 6E73B8249980 for ; Mon, 24 Jan 2022 13:29:53 +0000 (UTC) X-FDA: 79065263466.24.DF332FD Received: from mail-yb1-f169.google.com (mail-yb1-f169.google.com [209.85.219.169]) by imf03.hostedemail.com (Postfix) with ESMTP id 141FC2003F for ; Mon, 24 Jan 2022 13:29:36 +0000 (UTC) Received: by mail-yb1-f169.google.com with SMTP id 23so51240059ybf.7 for ; Mon, 24 Jan 2022 05:29:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=J7bb6IBw6GjkTb//ePU563Q3Mbbnc26r4MUINOM28oo=; b=dpV5tuNQ+gABsPSJvZ0kKqvgykw2stLtWbHGY+YevN9mF51/fh50k1/2fUG65mEVAD DmDhXMj9MP9u1faUvRK3LO0u4b7erZ6kWfXGWZ4l+VK1iafOKUTgMxZ27gf5HuuYJX1J 4vi0o6XafqRWdzzuniLIdLvobQvtpQr6Jmkj7sWvqUWZkSjRHVAfRk/+WYO7zFT3IaF/ 0SXSN8sUr3m3fAqGpY5deHJFt6Xb0hGdxGYkRF6mhr+dOqQ3SAaLZH3grw7e3u62khWu z6K2O+MAaPPIVwNgJ6YjyvLSgbf5uNcKRRqbP7xlVD6zK7KrA2t1QLFy+if0vi8t8G7J xzbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=J7bb6IBw6GjkTb//ePU563Q3Mbbnc26r4MUINOM28oo=; b=zkV99ItGW5D6nVS7dy4M6tROer3bdCQw/O7YQCz70gY5rnIfae0q8RgmKAS2rUdLco JtSKv0GLivQNRYzF/c1OvnKia3pGy5sL+AenYr0xxg5MppMJ8oz6GQqxjnneMFHBSxy4 e2xXPmslZL5731ZBJ0UGBQb4dlvOeqvdjQB0JgVu6C8nSAgzn/ipucKqXP7m5iKzlc7E NTizxyb2JR4JqqVnE4i6UmNOrTnLFEsDVXjcd0O23N6gUHQxpX/jS8braaZY5Rys0TPS Dx2SH0iy6wiJ/JVkRi1t9NawtbC+kpAF+uqkNtJrxGMB2L22+ALV1UbOClkFOIoeFy8e 8+xw== X-Gm-Message-State: AOAM530pJxazfu90J1P7vxMleN66HfqvqxqfXjVzbhR0hkBn40TXmJXj 1Efhr5iZCCzY7ztmv/CIJEhxT8Vvp1TOCC175nfxtCTxScE= X-Google-Smtp-Source: ABdhPJy09eBwzl1gL01WbY7b9cgW9fs2BvPYMYn3qQyppN3DTCjyrA5SvnFB/ghek0xrVWLA6uenUN9sgKLEj+j92pg= X-Received: by 2002:ab0:3a82:: with SMTP id r2mr5607677uaw.105.1643030546178; Mon, 24 Jan 2022 05:22:26 -0800 (PST) MIME-Version: 1.0 References: <164299573337.26253.7538614611220034049.stgit@noble.brown> <164299611281.26253.15560926531007295753.stgit@noble.brown> In-Reply-To: <164299611281.26253.15560926531007295753.stgit@noble.brown> From: Mark Hemment Date: Mon, 24 Jan 2022 13:22:15 +0000 Message-ID: Subject: Re: [PATCH 14/23] NFS: swap IO handling is slightly different for O_DIRECT IO To: NeilBrown Cc: Trond Myklebust , Anna Schumaker , Chuck Lever , Andrew Morton , Mel Gorman , Christoph Hellwig , David Howells , linux-nfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspam-User: nil X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 141FC2003F X-Stat-Signature: qpbf89xhfbxbisgx6mru1yxga7esayac Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=googlemail.com header.s=20210112 header.b=dpV5tuNQ; spf=pass (imf03.hostedemail.com: domain of markhemm@googlemail.com designates 209.85.219.169 as permitted sender) smtp.mailfrom=markhemm@googlemail.com; dmarc=pass (policy=quarantine) header.from=googlemail.com X-HE-Tag: 1643030976-326418 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Mon, 24 Jan 2022 at 03:53, NeilBrown wrote: > > 1/ Taking the i_rwsem for swap IO triggers lockdep warnings regarding > possible deadlocks with "fs_reclaim". These deadlocks could, I believe, > eventuate if a buffered read on the swapfile was attempted. > > We don't need coherence with the page cache for a swap file, and > buffered writes are forbidden anyway. There is no other need for > i_rwsem during direct IO. So never take it for swap_rw() > > 2/ generic_write_checks() explicitly forbids writes to swap, and > performs checks that are not needed for swap. So bypass it > for swap_rw(). > > Signed-off-by: NeilBrown > --- > fs/nfs/direct.c | 30 +++++++++++++++++++++--------- > fs/nfs/file.c | 4 ++-- > include/linux/nfs_fs.h | 4 ++-- > 3 files changed, 25 insertions(+), 13 deletions(-) > ... > @@ -943,7 +954,8 @@ ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter) > pos >> PAGE_SHIFT, end); > } > > - nfs_end_io_direct(inode); > + if (!swap) > + nfs_end_io_direct(inode); Just above this code diff, there is; if (mapping->nrpages) { invalidate_inode_pages2_range(mapping, pos >> PAGE_SHIFT, end); } This invalidation looks strange/wrong for a NFS swap write. Should it be disabled for the swap case? Cheers, Mark