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 A9D52D6ED17 for ; Thu, 21 Nov 2024 12:23:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 284246B00A5; Thu, 21 Nov 2024 07:23:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 234506B00A6; Thu, 21 Nov 2024 07:23:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0AE096B00A7; Thu, 21 Nov 2024 07:23:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DBF5C6B00A5 for ; Thu, 21 Nov 2024 07:23:40 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 431C11A1335 for ; Thu, 21 Nov 2024 12:23:40 +0000 (UTC) X-FDA: 82810017696.14.74AC90A Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf30.hostedemail.com (Postfix) with ESMTP id 1F7638001D for ; Thu, 21 Nov 2024 12:21:57 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="H2kAd/9p"; spf=pass (imf30.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732191667; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Z6i+4dWSdQLkPEB+Ec8jfbVRCaAInR7wHYj3/psiBHE=; b=RNiHmPqCKOqrr4UehU1rFVPZxFBfd0uayj9q6MFB3QPkXuN6TbZdrGl94p0HvEZUMkX1EG FxsxqPjhYLu/Bg4qcaHI6ZmLH2txgvbf+O7ag26cROfNhhB6ryEmKBfTrbRuREgNMEMx/j sJKNS5WraVYFnHRlqU2e7DgsGOSEy8o= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732191667; a=rsa-sha256; cv=none; b=LPBqrPiRbKLIrd4+S6Q1BfrY5oJZAanp0J85gSSwhIJcI67WrPjX7GYUuDWNfCdVUof8be xRGUdJOQHaBdh2U7JMyz1WT7lXBpDiQUdhswkicD0JG74Zw9DD+4VNUrN2THiJSUbUEdXe UlEKdgCL+dVYVWJbO9oJohteFggmgus= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b="H2kAd/9p"; spf=pass (imf30.hostedemail.com: domain of david@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=david@redhat.com; dmarc=pass (policy=none) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1732191817; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=Z6i+4dWSdQLkPEB+Ec8jfbVRCaAInR7wHYj3/psiBHE=; b=H2kAd/9pUynFCsT6IqWieFaUyFMOtFAWJSZjFjVclVvIwS0irA7UVUmdmnQWFJzYX1HMC6 ZEupfQ79tJxIBg8//v4kgXF75UwrKf12YEFJTuM4Ez3zOnVS5dspAHa39VPlckkmhuTTvE 6/uscnSl1pskZ8secjzC0Fv2JI5va+c= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-361-nmv9m4lhNSa5HSR4wO_hHg-1; Thu, 21 Nov 2024 07:23:35 -0500 X-MC-Unique: nmv9m4lhNSa5HSR4wO_hHg-1 X-Mimecast-MFC-AGG-ID: nmv9m4lhNSa5HSR4wO_hHg Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-382428c2564so488480f8f.2 for ; Thu, 21 Nov 2024 04:23:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732191814; x=1732796614; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:from:references:cc:to:subject:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Z6i+4dWSdQLkPEB+Ec8jfbVRCaAInR7wHYj3/psiBHE=; b=hlaE5M2NWfGdg/kn5xKj/dqHgN+crgMijk7jMgom6+Nh4I0o5H0DCK8EH7ikwV6Pom bRd9V85kXjnTMWn6qMeoo5Kx3KhYrmTg99iL4mAoZQnYKiNdqk9VJGZYYaDoRx308HuJ /cdVCmSIuYsFsD2POU0Z3zCFN/BrC0PA7jMRJ33oIhIvntkCqkx1PtpaYKerIqFTmzBf m8fGvGDbzZ0+L9Ww1isg6ZWKjR3O0hJLsOEp/wiPNNts7mq5MOLo8kzREIfD+5MM6cwQ A4J2WdJUmnjuLi877IIZ/q5dLeICtJwAzItUeItbJrB+EyLGrPJmMMxduUrXtj3Im1tK EIdw== X-Forwarded-Encrypted: i=1; AJvYcCXMRfTQMN/yTgea84KHDrdxte2klAnT9R9DwyrkmDSLw96d4emGjuOudi5ggCKn5w099iP9zzhqZg==@kvack.org X-Gm-Message-State: AOJu0Yy3Q1IuFkDWyATjxfvAccayY+buKJvi+lr+B9pDs4JNfGWtMsQk JcbZSyMbS1voeyeqhFq+93y5c72Noe5eHeCRse3x0A935YntAUlG7otiErPrJsTiP8hKpGF7uRV UByAd8o18doGlPDXhsvET0B6fOa7r9pjsKvTgw1Cf09dwbbhY X-Received: by 2002:a5d:59af:0:b0:382:516e:271b with SMTP id ffacd0b85a97d-38254b26416mr4135027f8f.58.1732191814651; Thu, 21 Nov 2024 04:23:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IHiEJoGXX0H9+YxrkL3w67kPrXj5+nk34QWe8K0VhlUYrcZUZM5ijH4Fehc62MFsG+2wKg9eA== X-Received: by 2002:a5d:59af:0:b0:382:516e:271b with SMTP id ffacd0b85a97d-38254b26416mr4134959f8f.58.1732191813180; Thu, 21 Nov 2024 04:23:33 -0800 (PST) Received: from ?IPV6:2003:cb:c70c:de00:1200:8636:b63b:f43? (p200300cbc70cde0012008636b63b0f43.dip0.t-ipconnect.de. [2003:cb:c70c:de00:1200:8636:b63b:f43]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3825493ea20sm4910187f8f.93.2024.11.21.04.23.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 21 Nov 2024 04:23:32 -0800 (PST) Message-ID: <954bfd5d-49ee-4754-90a6-12b44d8350d5@redhat.com> Date: Thu, 21 Nov 2024 13:23:30 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 1/2] filemap: Pass address_space mapping to ->free_folio() To: Elliot Berman , Paolo Bonzini , Andrew Morton , Sean Christopherson , Fuad Tabba , Ackerley Tng , Mike Rapoport , "H. Peter Anvin" , "Matthew Wilcox (Oracle)" , Jonathan Corbet , Trond Myklebust , Anna Schumaker , Mike Marshall , Martin Brandenburg , Alexander Viro , Christian Brauner , Jan Kara Cc: James Gowans , Mike Day , linux-fsdevel@vger.kernel.org, kvm@vger.kernel.org, linux-coco@lists.linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-nfs@vger.kernel.org, devel@lists.orangefs.org, linux-arm-kernel@lists.infradead.org References: <20241120-guestmem-library-v4-0-0c597f733909@quicinc.com> <20241120-guestmem-library-v4-1-0c597f733909@quicinc.com> From: David Hildenbrand Autocrypt: addr=david@redhat.com; keydata= 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 WNyWQQ== Organization: Red Hat In-Reply-To: <20241120-guestmem-library-v4-1-0c597f733909@quicinc.com> X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: zzzdObYKV4MPiO4kG9IFYKaWq1CPxNy2KN4A6ZBJ2nU_1732191815 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 1F7638001D X-Stat-Signature: cjkmd9ebghe5igb7kiu7fzh6pktoixpb X-HE-Tag: 1732191717-407510 X-HE-Meta: U2FsdGVkX1/CnnvXVhCZDT4s+TEORPo3/JW0fbVMIH/MNfnQSknDEYr2D6kTU7S1FuEw4jkogw6EzXEaqKx0dlRwQcPY8G9o6vUNqykNjFxHWJS6Ct5z9kmltLxZEgpJxdZJIam6B6UBGLY5lP1Sl4as/77lCqU0vchrX33YiphC3DCyDwGaNWSXpf5yDG452/i3P9SUghydvy9XDk7ZZazefvIVXjzQiMMBmd4xksYx+c5t3cBa6/Rus30OkVY8YCAbtCJmsKD0nPMbEyO6XVdq3R2nrxjqx5xtF6eEe99RDTJRrrd6iQHgyOK1X09HJ3ce/IF5c7OY2zAeqJTTN/9oYvsu1jie8txFVgLfylAuRPL8OKSxw7gkxfXVdWNJEALOwmO1kgkwY7zofCn9sqzihSClsSKXLlmbll7GjPTwsA+W0VdoFvBOB5uG5oQBEPQDC7BEwWZ/XCqeGQgVeTF2iv4jceiHL6XE9YKwNG9QfxqaFyDPcngT9rxIZrxoWZBoWgSgJK97sxz0lCpbTL0dVZ0mYSYYdyty0DrgFozyZLWSlFVVm3J1Byp33D5SzEhc7OUmnO7J8WpCJZFY7fOXr8Z9XL53ZfVmLWiwekDejGM9IhTj1McYM81Lpj6X0LjFnMq4dgqbRf+WkXVhRBSAUzxT2qsMkZa+Td3ZEeo8IfTfaOzVdNp0t42mNbNysQNEQQRMcp7SbF77YLHRfvn2OUVtPSf9bE1fdTZAhwpGxwMAYBN73vHta8gkcSD4wTfmbJPxaTFxM02JhrrMtS3U8lHN8ovbpxLb6x1pw6yOU11u+6MuK8cQge1H2AztSvNx1t2SjrwOzbCgnK8zK+LesbB/yr3P3w3GMAzvu2NawmfpBA2fsHhQIt3xjAs0ERoSLFUOt82l25ghNM9lEjttR7qp3hhLNKrR0ZMsVqzXNGEBkYXbU8wC0ifNYys1WKNMNgpXOn/3QJOGNOL uFrQKEbT ST3e/8tET2EHOwpPZMKJ1QLx3q4GC9JJco7M5JecfoqKfd4NRjP8WAJMi3DAZAWy1VOz9H7Q9Sk3DmIsLzA5sdcK9Nv/ZbBeQdGSDNdyiY66FFhvmAl1hgGhyXMnzCZAyBoM7DD37/MZnkSKaUdOWpC/AbKenCKM9GBGOEkf6e3kmqfAPYjTIEW/cyVQ8Y1WA336G9wiqKzlrHtyLZYLRR010h5UNv6kbOX5Y2VyAPvrlJQCABZqHHd9KMIx/HjTw/f5EUy4wiCX3MS5YG5z3KIz9wwrYJ9O/b/BBhPXSQy4zZ1fm8VoXFx6RIpRVMUGQ/JLtG6sxs3hbk2xj19dX4e+avIdXGL4aPC0H/h/PPQvnfPyGgrWVPzn470m1q4N7hIvvzMpiVsqOF6czucpkVid+TPNjwcWQeRPIZ6ubxM0Y3PzA6bBdnTHHqw7b3YM3dh8fUHONUl6iksGEc5q3OAaggF8kJFQpFebhQTFoyVY0TsxGW5YNG7+X4UV5wvYhRzXumPGp46ODBR9T0Z87V3r8b5lugIxTpgRESMZdKXVxctA= 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: List-Subscribe: List-Unsubscribe: On 20.11.24 19:12, Elliot Berman wrote: > When guest_memfd becomes a library, a callback will need to be made to > the owner (KVM SEV) to update the RMP entry for the page back to shared > state. This is currently being done as part of .free_folio() operation, > but this callback shouldn't assume that folio->mapping is set/valid. > > The mapping is well-known to callers of .free_folio(), so pass that > mapping so the callback can access the mapping's private data. > > Link: https://lore.kernel.org/all/15f665b4-2d33-41ca-ac50-fafe24ade32f@redhat.com/ > Suggested-by: David Hildenbrand > Signed-off-by: Elliot Berman > --- > Documentation/filesystems/locking.rst | 2 +- > fs/nfs/dir.c | 11 ++++++----- > fs/orangefs/inode.c | 3 ++- > include/linux/fs.h | 2 +- > mm/filemap.c | 9 +++++---- > mm/secretmem.c | 3 ++- > mm/vmscan.c | 4 ++-- > virt/kvm/guest_memfd.c | 3 ++- > 8 files changed, 21 insertions(+), 16 deletions(-) > > diff --git a/Documentation/filesystems/locking.rst b/Documentation/filesystems/locking.rst > index f5e3676db954b5bce4c23a0bf723a79d66181fcd..f1a20ad5edbee70c1a3c8d8a9bfc0f008a68985b 100644 > --- a/Documentation/filesystems/locking.rst > +++ b/Documentation/filesystems/locking.rst > @@ -258,7 +258,7 @@ prototypes:: > sector_t (*bmap)(struct address_space *, sector_t); > void (*invalidate_folio) (struct folio *, size_t start, size_t len); > bool (*release_folio)(struct folio *, gfp_t); > - void (*free_folio)(struct folio *); > + void (*free_folio)(struct address_space *, struct folio *); > int (*direct_IO)(struct kiocb *, struct iov_iter *iter); > int (*migrate_folio)(struct address_space *, struct folio *dst, > struct folio *src, enum migrate_mode); > diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c > index 492cffd9d3d845723b5f3d0eea3874b1f1773fe1..54e7069013ef2a63db24491fa65059e5ad68057a 100644 > --- a/fs/nfs/dir.c > +++ b/fs/nfs/dir.c > @@ -55,7 +55,7 @@ static int nfs_closedir(struct inode *, struct file *); > static int nfs_readdir(struct file *, struct dir_context *); > static int nfs_fsync_dir(struct file *, loff_t, loff_t, int); > static loff_t nfs_llseek_dir(struct file *, loff_t, int); > -static void nfs_readdir_clear_array(struct folio *); > +static void nfs_readdir_clear_array(struct address_space *, struct folio *); > static int nfs_do_create(struct inode *dir, struct dentry *dentry, > umode_t mode, int open_flags); > > @@ -218,7 +218,8 @@ static void nfs_readdir_folio_init_array(struct folio *folio, u64 last_cookie, > /* > * we are freeing strings created by nfs_add_to_readdir_array() > */ > -static void nfs_readdir_clear_array(struct folio *folio) > +static void nfs_readdir_clear_array(struct address_space *mapping, > + struct folio *folio) > { > struct nfs_cache_array *array; > unsigned int i; > @@ -233,7 +234,7 @@ static void nfs_readdir_clear_array(struct folio *folio) > static void nfs_readdir_folio_reinit_array(struct folio *folio, u64 last_cookie, > u64 change_attr) > { > - nfs_readdir_clear_array(folio); > + nfs_readdir_clear_array(folio->mapping, folio); > nfs_readdir_folio_init_array(folio, last_cookie, change_attr); > } > > @@ -249,7 +250,7 @@ nfs_readdir_folio_array_alloc(u64 last_cookie, gfp_t gfp_flags) > static void nfs_readdir_folio_array_free(struct folio *folio) > { > if (folio) { > - nfs_readdir_clear_array(folio); > + nfs_readdir_clear_array(folio->mapping, folio); > folio_put(folio); > } > } > @@ -391,7 +392,7 @@ static void nfs_readdir_folio_init_and_validate(struct folio *folio, u64 cookie, > if (folio_test_uptodate(folio)) { > if (nfs_readdir_folio_validate(folio, cookie, change_attr)) > return; > - nfs_readdir_clear_array(folio); > + nfs_readdir_clear_array(folio->mapping, folio); > } > nfs_readdir_folio_init_array(folio, cookie, change_attr); > folio_mark_uptodate(folio); > diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c > index aae6d2b8767df04714647db5fe1e5ce54c092fce..2d554102ba9ac83acd2b637d4568090717e87f94 100644 > --- a/fs/orangefs/inode.c > +++ b/fs/orangefs/inode.c > @@ -470,7 +470,8 @@ static bool orangefs_release_folio(struct folio *folio, gfp_t foo) > return !folio_test_private(folio); > } > > -static void orangefs_free_folio(struct folio *folio) > +static void orangefs_free_folio(struct address_space *mapping, > + struct folio *folio) > { > kfree(folio_detach_private(folio)); > } > diff --git a/include/linux/fs.h b/include/linux/fs.h > index e3c603d01337650d562405500013f5c4cfed8eb6..6e5b5cc99750a685b217cb8273c38e7f6bf5ae86 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -417,7 +417,7 @@ struct address_space_operations { > sector_t (*bmap)(struct address_space *, sector_t); > void (*invalidate_folio) (struct folio *, size_t offset, size_t len); > bool (*release_folio)(struct folio *, gfp_t); > - void (*free_folio)(struct folio *folio); > + void (*free_folio)(struct address_space *, struct folio *folio); > ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter); > /* > * migrate the contents of a folio to the specified target. If > diff --git a/mm/filemap.c b/mm/filemap.c > index 36d22968be9a1e10da42927dd627d3f22c3a747b..2c8d92dd9d5dd433acbf1b87156eb2e68337332d 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -235,12 +235,12 @@ void __filemap_remove_folio(struct folio *folio, void *shadow) > > void filemap_free_folio(struct address_space *mapping, struct folio *folio) > { > - void (*free_folio)(struct folio *); > + void (*free_folio)(struct address_space *, struct folio *); > int refs = 1; > > free_folio = mapping->a_ops->free_folio; > if (free_folio) > - free_folio(folio); > + free_folio(mapping, folio); > > if (folio_test_large(folio)) > refs = folio_nr_pages(folio); > @@ -814,7 +814,8 @@ EXPORT_SYMBOL(file_write_and_wait_range); > void replace_page_cache_folio(struct folio *old, struct folio *new) > { > struct address_space *mapping = old->mapping; > - void (*free_folio)(struct folio *) = mapping->a_ops->free_folio; > + void (*free_folio)(struct address_space *, struct folio *) = > + mapping->a_ops->free_folio; > pgoff_t offset = old->index; > XA_STATE(xas, &mapping->i_pages, offset); > > @@ -843,7 +844,7 @@ void replace_page_cache_folio(struct folio *old, struct folio *new) > __lruvec_stat_add_folio(new, NR_SHMEM); > xas_unlock_irq(&xas); > if (free_folio) > - free_folio(old); > + free_folio(mapping, old); > folio_put(old); > } > EXPORT_SYMBOL_GPL(replace_page_cache_folio); > diff --git a/mm/secretmem.c b/mm/secretmem.c > index 3afb5ad701e14ad87b6e5173b2974f1309399b8e..8643d073b8f3554a18d419353fa604864de224c1 100644 > --- a/mm/secretmem.c > +++ b/mm/secretmem.c > @@ -152,7 +152,8 @@ static int secretmem_migrate_folio(struct address_space *mapping, > return -EBUSY; > } > > -static void secretmem_free_folio(struct folio *folio) > +static void secretmem_free_folio(struct address_space *mapping, > + struct folio *folio) In the mm world, we're nowadays indenting the second parameter line with two tabs. Makes it easier to rename the function without having to adjust many lines, and requires less lines in general. Not sure about rules for FSes (personally, I just do it everywhere like this now :) ). Acked-by: David Hildenbrand -- Cheers, David / dhildenb