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 3F8D7C6FD1F for ; Tue, 26 Mar 2024 08:44:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CA27E6B0087; Tue, 26 Mar 2024 04:44:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C520F6B0088; Tue, 26 Mar 2024 04:44:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B41286B0089; Tue, 26 Mar 2024 04:44:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A4DE96B0087 for ; Tue, 26 Mar 2024 04:44:14 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 6987B12099F for ; Tue, 26 Mar 2024 08:44:14 +0000 (UTC) X-FDA: 81938553228.26.F9458A8 Received: from mout-p-103.mailbox.org (mout-p-103.mailbox.org [80.241.56.161]) by imf13.hostedemail.com (Postfix) with ESMTP id 69F3120015 for ; Tue, 26 Mar 2024 08:44:12 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=hrJ58fz4; dmarc=pass (policy=quarantine) header.from=pankajraghav.com; spf=pass (imf13.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.161 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711442652; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kgtpYMDWWZCofmZ+Xr/eXLBedWKAyq/G32SmuICtiAA=; b=NV3qmky1agyX59/TGNsFcntFFrZw4ufj+93inQJOSc0iE1Y6KHK1skrvoULjX6hVJf18Xb A6NdeLiwycmkPUSnBP6rydZ3QhzUinuBdCt3C1yAABM+3H12clRrRuyutYygisnKa4cZM9 fkv/20nbn+dJ8KblbrTTIqcDmy/OUgk= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=hrJ58fz4; dmarc=pass (policy=quarantine) header.from=pankajraghav.com; spf=pass (imf13.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.161 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711442652; a=rsa-sha256; cv=none; b=TEwnIkPE+8+DeivArIUth4hhZS/EX9sc+kRzIdwbeNI2+az7Rkl00nWEBHogHfGnSpSUyz VcaX+V5c1JFWxJjBe3yB9IlGUKYidkzZEA792yfiIcg8OqCVLxLZaHKMlWQYxHL9Bm8Ia4 LX5HQ7UOzz6O6qVeE9UvT8NzjzAhYKM= Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4V3jyb1kR6z9skM; Tue, 26 Mar 2024 09:44:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pankajraghav.com; s=MBO0001; t=1711442647; 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: in-reply-to:in-reply-to:references:references; bh=kgtpYMDWWZCofmZ+Xr/eXLBedWKAyq/G32SmuICtiAA=; b=hrJ58fz4Ue65jycC7i4YDw02447kT3KvXWoC6FTQuBcFb+4nZ6Mm0+ODTk4YLfH5jWs/NA ovH5FV/oJAysdNyFyv2ujSm0zy2JqICHjuhl1KzCik5tTzDQHX4lS+Rvyj7HlPOTuDTu2W zWwJgEl3gOBCx6IbQLhfktko0CKJYqIRrpxJoDw7/8jH21wUNMIyhPCaZaw27WKNzQreeb W+vufsc7/cPKw/CCfyZT/+V1vgZr1g8MAVUJL2nB/yBwQSe1bpYs+hW8zyWB0F/eGZM7Tk pnbl2TSyqI7tSWiGf4ODrH+OpLKpZFtnYEJRgBiNxL5MLsByk8JwxRAblu+6ng== Date: Tue, 26 Mar 2024 09:44:02 +0100 From: "Pankaj Raghav (Samsung)" To: Matthew Wilcox Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, gost.dev@samsung.com, chandan.babu@oracle.com, hare@suse.de, mcgrof@kernel.org, djwong@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, david@fromorbit.com, akpm@linux-foundation.org, Pankaj Raghav Subject: Re: [PATCH v3 02/11] fs: Allow fine-grained control of folio sizes Message-ID: References: <20240313170253.2324812-1-kernel@pankajraghav.com> <20240313170253.2324812-3-kernel@pankajraghav.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 69F3120015 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: scpeos91cykon5m5noij3izh5z677r7g X-HE-Tag: 1711442652-811307 X-HE-Meta: U2FsdGVkX18yNIQQepM86gIBvcBq2iMkWyg4P6f1waCuX6TLF7dzUqnaWSo/obvKoqFGpMU0pq/hkagTSgW0L4nTpPLNZ0I9C/aHZnBTogkqhOd99tewStpEmQ6NXD+WlBJik79HYteuwyxk0hv51zJQ02JBB2irjUz8Zorg9hf+XadN2TUkcPa7FLZ/wmpjzbDNFTDi+WRaAGPhuznTbsPoBUgPb4vdAfguFmje9/buhaW4c+3CEKdPmKB1Z9z9uXhYfdfA5G3WVO8CwQ3lQ4ZEJdhCF45+BbEaUsSO02b5yXh6XruInEWbOJm5UuMpswoiN4pHLhjYeJXQKnXLUJ3fWN4ih+T3FlnnIZUISeuCdwPkWR2PeUgnmqfjW4o3+LK4M2OUywD4GCAh9MzXqY1okkeSjPTc7Onlhdky58LzWI3hdpaW1bYQL3O6RW4wxlwoXLOKgN2j42eOJSlEIhRWWkbjf7/BX8ktu1ynDoZ7ED+oyrKtruziiw0505B7Sx2Fyid4PVrbI1Kj0p/FiQ4etUlz62VO6dLq5vXrC06kt9r24aqlm1sO9m5U9ivsC+JvtTSpt8w7t0whhK3Q1+PCfVj4zcHnGjqzeIXdxPvZqrZwrgPTn6zNLgb+QR7JCqs5XBG6V5ijiUZ/U8Q+XUxWBnaxSsHlxp3bGekgpFH7zyNgsddA2qAmSiGZ5CO8k9Oc8GOOPlNpTu+LYXA9/gtOLcdOxzcCfDKg6m8P4sV1N/rdHVSWLR0MU+u8I4m6K2Zw+9WHGiSI1ZlJDEm3EzhffQQY4BtEUZqBTkv4ORBB/+7uSEngaCws2bxw1O4iAKqTjRAC9SFqZ2o0e20ZK1N4Z6NxO/qJNUm+LyvygNJTGJ9m7uPoXxRs5fB5MNhqhH9suVoJK6p7OhsGBi5wK6sxe5m3JpcYCGBinTvkkYvrEaKT11pzXl7k/8ci1Vt9+c2I/RYHnHHte7tLBII 8ObA74aT tu45QhDr3sfq5yp/f2wye0whSKYNZCAYGOijUtA5lLK0QFX+7564pkgtkV1L5dlajbYaz5zVMTKXwrseiiXlN01dcZy5+NLPXGwseY1SnztVUuJRP6wo8xcwH+l5Pka44542Q3KtTCXRcoR//LZscpciwwqg17QRNYtH/ihObhM02F+XuTtfZ0AGCgt/iLXdOXkrXoLUZMSduK1L3WuyTONHF9lVW8EtFkusKvY5UF2FPhdbQ4Cd6CDNujw== 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 Mon, Mar 25, 2024 at 06:29:30PM +0000, Matthew Wilcox wrote: > On Wed, Mar 13, 2024 at 06:02:44PM +0100, Pankaj Raghav (Samsung) wrote: > > +/* > > + * mapping_set_folio_min_order() - Set the minimum folio order > > + * @mapping: The address_space. > > + * @min: Minimum folio order (between 0-MAX_PAGECACHE_ORDER inclusive). > > + * > > + * The filesystem should call this function in its inode constructor to > > + * indicate which base size of folio the VFS can use to cache the contents > > + * of the file. This should only be used if the filesystem needs special > > + * handling of folio sizes (ie there is something the core cannot know). > > + * Do not tune it based on, eg, i_size. > > + * > > + * Context: This should not be called while the inode is active as it > > + * is non-atomic. > > + */ > > +static inline void mapping_set_folio_min_order(struct address_space *mapping, > > + unsigned int min) > > +{ > > + if (min > MAX_PAGECACHE_ORDER) > > + min = MAX_PAGECACHE_ORDER; > > + > > + mapping->flags = (mapping->flags & ~AS_FOLIO_ORDER_MASK) | > > + (min << AS_FOLIO_ORDER_MIN) | > > + (MAX_PAGECACHE_ORDER << AS_FOLIO_ORDER_MAX); > > +} > > I was surprised when I read this, which indicates it might be surprising > for others too. I think it at least needs a comment to say that the > maximum will be set to the MAX_PAGECACHE_ORDER, because I was expecting > it to set max == min. I guess that isn't what XFS wants, but someone > doing this to, eg, ext4 is going to have an unpleasant surprise when > they call into block_read_full_folio() and overrun 'arr'. > > I'm still not entirely convinced this wouldn't be better to do as > mapping_set_folio_order_range() and have > > static inline void mapping_set_folio_min_order(struct address_space *mapping, > unsigned int min) > { > mapping_set_folio_range(mapping, min, MAX_PAGECACHE_ORDER); > } I agree. Having a helper like this will make it more explicit. The limits checking can also be done in this helper itself. Also it makes mapping_set_large_folio() more clear: static inline void mapping_set_large_folios(struct address_space *mapping) { mapping_set_folio_range(mapping, 0, MAX_PAGECACHE_ORDER); } instead of just calling mapping_set_folio_min_order(). Thanks.