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 1DA25C48BC1 for ; Wed, 14 Feb 2024 16:36:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9568B8D0016; Wed, 14 Feb 2024 11:36:01 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 907098D000E; Wed, 14 Feb 2024 11:36:01 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7CE5C8D0016; Wed, 14 Feb 2024 11:36:01 -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 6C6CC8D000E for ; Wed, 14 Feb 2024 11:36:01 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 1369D120114 for ; Wed, 14 Feb 2024 16:36:01 +0000 (UTC) X-FDA: 81790961322.23.BB5741F Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152]) by imf05.hostedemail.com (Postfix) with ESMTP id 0FD8C100008 for ; Wed, 14 Feb 2024 16:35:58 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=uqz1HZg4; spf=pass (imf05.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.152 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1707928559; 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=ZsfovuJLzdrxRa6MGc34FOslobJjKQvkqoVmuE4JFsY=; b=DWvkVqUG6j6ed1YqKtVdJD69xzSOvrQ/JeWAEG4RYToS0yPEFPZ3xP1b2bGEX7Uwi2nRuH tO/WHXN2uko1z+kgclHzJWHVHWNfZ0kM+aLwSyNk4LIMdI3Futs9rBa1AHfuYAB+9KQaWD 6BICntkgYIldLOMnSqBUI7opdBqk3mU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1707928559; a=rsa-sha256; cv=none; b=LLl9o9Sc4pSevg5HHBA8JwzLrmuTYasim0NR9Rd8VEbiRSaFd63V1F91fiQWo4LidB3IMX yH6YZJaQO4NsUhjHPdCPaiDehOGsiNeSr9/htq6qKiyC8lDoqOJPJ/HfVXOtU3f0zHbB0P HH8PLugli1BHJfMHdwG3mka1a4Hrejw= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=uqz1HZg4; spf=pass (imf05.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.152 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=none Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:b231:465::102]) (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-102.mailbox.org (Postfix) with ESMTPS id 4TZkMs4fClz9srB; Wed, 14 Feb 2024 17:35:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pankajraghav.com; s=MBO0001; t=1707928553; 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=ZsfovuJLzdrxRa6MGc34FOslobJjKQvkqoVmuE4JFsY=; b=uqz1HZg4B1Wfl18CTY+bqw7WLjhJdrSZYhgK7tFyfV+vYT8pyHYw4mIXFv5BwVACA0khwK AWW7+aUsZvYeOGnP6EdaZIRVm68I7V7PQKOEywEHpqoBpqa/fJdxwvI2Zkcl9kXppjIwCY HpAz+RkIsoh2M2ud0Not3jgDBoZdFgHQVILWbZZxzrvyUZmtC5buSBAPaPhCgjs3f4K93I fACz64Y4i0WjPEiM3Wqus4gq6xdPLtptrCAcXmZsi2jaICOxGHc2b1mQWpzSr4mKOJ6r4P 3rHAiM8M21FNtOhxuqkkoXdlcfpFYfEGjXsrjBf/U22LpORo0GyiGGQD1UJn/Q== Date: Wed, 14 Feb 2024 17:35:49 +0100 From: "Pankaj Raghav (Samsung)" To: Dave Chinner Cc: linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, mcgrof@kernel.org, gost.dev@samsung.com, akpm@linux-foundation.org, kbusch@kernel.org, djwong@kernel.org, chandan.babu@oracle.com, p.raghav@samsung.com, linux-kernel@vger.kernel.org, hare@suse.de, willy@infradead.org, linux-mm@kvack.org Subject: Re: [RFC v2 14/14] xfs: enable block size larger than page size support Message-ID: References: <20240213093713.1753368-1-kernel@pankajraghav.com> <20240213093713.1753368-15-kernel@pankajraghav.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 0FD8C100008 X-Rspam-User: X-Stat-Signature: xrbh41kbsy77bcfxphjwbac9ycsx7c8k X-Rspamd-Server: rspam03 X-HE-Tag: 1707928558-233157 X-HE-Meta: U2FsdGVkX1/Qwi3awIBDDLrqFj98vtQlVtxHdSYYtl2BKLtCSE/LHlW8eTMY4JeK8025uuaK+D9H7hF3j1rg5FkmT9t6aiHG9IMZoPmjrkmk43ghlgPH+CcdcbwLnE4HclZqyfRD9d8LBOZhAGYkdNi6aMzgHxWfuKd5cFeykNrtDp1GPFXDysY6xIlUNVfiJMyPUMzBIFmDHdsA/jJEERDsArO6SR/tvw/P/hdkuStZAsedD9TGGecL0+yRBJQZoP5eezQNf1lOoakLJKR3LKa99h/vy/3SaqPNNJ/l3qI0yEM9vr9NZI1k/Pmc7MVTvNtB8AlIrkdQWwxAJq24mc9st3haFMvjH6qvrNZ92lfKa6WEIi29O4DuSpp59AAKeW4EkZWza1dkD9RJfONXDb7Go2FEGTZMBDq9kegV9tfERmodw3Q/PIC+y4QOupoHUtzETdiMfCsWMOZk+YWFfllDE7fxbxC8NrnHBgmYeI68r8rWu7oGcVZdZG/CQTF+GuBzJBGOl/pRLItJijRNZgkggSo7cIiEnSVKt678LpK+NscotkYx5aPK4yvMln9m4n0DN1BaUpWv+jpW9xWb9aQC6FCucUCBiAKzuD7dtpAxHYlxOVo75aRbBFYjNU6dISIzdMnHBDwENGK4+rJgpgpaP5W9nxX7c/IGYdIwrqYxgiMT0cIa0odP8Pn6qLUSJ1sYRuYFaqEGz6VW0QJ3k7g+U9jVRSJm0ST3lYZtCoCq7Rvs5ai3XJoa7yEvQfM/On9EVtBJD2EHIjTnLgd/cGUw+GW2BpvL7acs7iz2VxmiMOYDVyi6XoDjYrfqFgALNVZ0T0YFxxhYjSnlFkf/wzzLzsMZsngHfcDJdOhpoYMuSX6s4j6xRb6QxDYp8FgDtlqsaSAoT8U6Yze4dCiQKug6X+vAawC54tYvnGidgqt0GkzCeo1MhNGpcjq8nvSFd0SmOld8IvJ4oSk3iRZ I6tilnLL dowK8n1L17zLI149eXpzKKbgFyphv33e3L0BzrlbRUObQQfM1bmF1dIOOpTOB36MVsa8rMNi/cwfX/FUMbDprvQ2/QAaGjxhmtBuEoxEmRBfI01M+Zf+dqe0Lh5nwQtBAyUoW7U8ibwe74gCfWk4pk2MZYxwIqYTLTMtbZ+anHVvL6WbQl5QuC0xgFtKL/xVpfCHfs+w9gHhRrBnaedExvV9eTWOXM6Ywv6Ki 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: > > struct xfs_inode *ip; > > + int min_order = 0; > > > > /* > > * XXX: If this didn't occur in transactions, we could drop GFP_NOFAIL > > @@ -88,7 +89,8 @@ xfs_inode_alloc( > > /* VFS doesn't initialise i_mode or i_state! */ > > VFS_I(ip)->i_mode = 0; > > VFS_I(ip)->i_state = 0; > > - mapping_set_large_folios(VFS_I(ip)->i_mapping); > > + min_order = max(min_order, ilog2(mp->m_sb.sb_blocksize) - PAGE_SHIFT); > > + mapping_set_folio_orders(VFS_I(ip)->i_mapping, min_order, MAX_PAGECACHE_ORDER); > > That's pretty nasty. You're using max() to hide underflow in the > subtraction to clamp the value to zero. And you don't need ilog2() > because we have the log of the block size in the superblock already. > > int min_order = 0; > ..... > if (mp->m_sb.sb_blocksize > PAGE_SIZE) > min_order = mp->m_sb.sb_blocklog - PAGE_SHIFT; how is it underflowing if I am comparing two values of type int? > > But, really why recalculate this -constant- on every inode > allocation? That's a very hot path, so this should be set in the > M_IGEO(mp) structure (mp->m_ino_geo) at mount time and then the code > is simply: > > mapping_set_folio_orders(VFS_I(ip)->i_mapping, > M_IGEO(mp)->min_folio_order, MAX_PAGECACHE_ORDER); > That is a good idea. I will add this change in the next revision. > We already access the M_IGEO(mp) structure every inode allocation, > so there's little in way of additional cost here.... > > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > > index 5a2512d20bd0..6a3f0f6727eb 100644 > > --- a/fs/xfs/xfs_super.c > > +++ b/fs/xfs/xfs_super.c > > @@ -1625,13 +1625,11 @@ xfs_fs_fill_super( > > goto out_free_sb; > > } > > > > - /* > > - * Until this is fixed only page-sized or smaller data blocks work. > > - */ > > - if (mp->m_sb.sb_blocksize > PAGE_SIZE) { > > + if (!IS_ENABLED(CONFIG_XFS_LBS) && mp->m_sb.sb_blocksize > PAGE_SIZE) { > > xfs_warn(mp, > > "File system with blocksize %d bytes. " > > - "Only pagesize (%ld) or less will currently work.", > > + "Only pagesize (%ld) or less will currently work. " > > + "Enable Experimental CONFIG_XFS_LBS for this support", > > mp->m_sb.sb_blocksize, PAGE_SIZE); > > error = -ENOSYS; > > goto out_free_sb; > > This should just issue a warning if bs > ps. > > if (mp->m_sb.sb_blocksize > PAGE_SIZE) { > xfs_warn(mp, > "EXPERIMENTAL: Filesystem with Large Block Size (%d bytes) enabled.", > mp->m_sb.sb_blocksize); > } Yes! Luis already told me to add a warning here but I missed it before sending the patches out. > > -Dave. > -- > Dave Chinner > david@fromorbit.com