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 B828FEED61E for ; Fri, 15 Sep 2023 18:27:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 500AA6B03A7; Fri, 15 Sep 2023 14:27:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 489736B03A9; Fri, 15 Sep 2023 14:27:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3034F6B03AA; Fri, 15 Sep 2023 14:27:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 1A8956B03A7 for ; Fri, 15 Sep 2023 14:27:20 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E0B92140750 for ; Fri, 15 Sep 2023 18:27:19 +0000 (UTC) X-FDA: 81239664198.06.245685F Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by imf18.hostedemail.com (Postfix) with ESMTP id 10BBF1C0025 for ; Fri, 15 Sep 2023 18:27:17 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zoK7RmHj; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.43 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694802438; 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=7TVRLEu9EJ9mGV2bipP8Xm97KGB9uZNTupnuQjSJdsE=; b=uL/Xq8JXGFHWCUvnv2Pf/06g8DPmdKbARLJPXD2TqoZmp7WW9Aw29ysU3WzeNkJybPd7SJ S29JSw5TzYin6WRIPzpzWbsqEoMkROtOQI8Wu8IYkapcmJsokJa+Jub3ER3MrwCvCunPHr rYoEhfGkfBUmEE/ws9Cwkmf/X4+JVRk= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=zoK7RmHj; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf18.hostedemail.com: domain of yosryahmed@google.com designates 209.85.208.43 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694802438; a=rsa-sha256; cv=none; b=s5nDmB3sekzY80mfP2i30hwyp6isLdnTdEHNmKtakWsM2DBk+ZqcEUtTzS+6ROgUwoaxAI KXeUpbiAFuoj4tjk7Dmyh1pc+aUpIw7+DnaueMeHfarrodcsB2UbOhhcahucs/EaCmTJg+ KkTbwiEN0OVggwy7DWUZIaSLTcHysfk= Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-52e297c7c39so2818767a12.2 for ; Fri, 15 Sep 2023 11:27:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1694802436; x=1695407236; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=7TVRLEu9EJ9mGV2bipP8Xm97KGB9uZNTupnuQjSJdsE=; b=zoK7RmHjr1S2bs0u32azUOw2a1BwLXCrx2KeGPFTRTPngt1nxHDYwaYL23WGz/hZ1G HC0EOFyvl1bWYUiq76KN9D8KdIT1SBEgVSFqdyXBhL66bZ9x0X+g3Bp+uDxT04HGc7up oHShYrfBfaGBpb0olvn6DEQHsE0CPjTPJ8Vrjmb+Ax1SV/v8U+3fnoq+LZAzgFIGqP2T KQtFgI2l7KmEeS4RAOLyfQcup9GPvstJFpDxQX542J8vF/BZbp3mDuNXbJFmsgviZzUW elcAnnpiv448XUD4Yp9cBQ0AM6la848V8VF2bwQtLmL5CSrPg0+49PXxvManh9gk8ZS5 hj/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694802436; x=1695407236; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7TVRLEu9EJ9mGV2bipP8Xm97KGB9uZNTupnuQjSJdsE=; b=F+wOJMCWNjl9BsTiUgZDtxojlYut/Ki33QcimcqNjoP4aEDPnpfV+BNJtr7Xg9HODD NQyLmwowR2xGyPLfuYlC9pZ6pbBKm/OEkRC+vb0zo60aZAEQFsWpxsYLd1R2pU/8Lhy0 79lwyJneoQDK5kOe5s9nKk/493a/Eiz0ue8Qfh2cnfU8vB0aPDr1+LEzUqe/4BT+upjd N1mRt85X9UNSGll4czuV6D3lRILsj56Sv97JjzkH28B/nwjtKhkyiS+PEJ9mUphvVdc+ DbSPkB+KYXoUR0RKSXZ9DrlgPOJOLhuY7vKjz53Du22F5ANxYDSFMqcPxgMfAmmTt6cx HbXA== X-Gm-Message-State: AOJu0Yyu07Hsu83aEU6xgH8h02wCm06vy2Acp7WahQ0LwydWO7UxmmXK nASp5x6mCsnAUsjDvhLTMsbPbm2JWN3OoaWICkrmSA== X-Google-Smtp-Source: AGHT+IHg0l+d+9eXrE3JQYT1rNSzTJ30WS4x3AxsO8Su5H91K9tA7o+8Ltb2jJoMejIzZEOsQjI7O6t5d3aHWeK0K/E= X-Received: by 2002:a17:907:75fb:b0:9a1:f3a6:b906 with SMTP id jz27-20020a17090775fb00b009a1f3a6b906mr2140406ejc.36.1694802436299; Fri, 15 Sep 2023 11:27:16 -0700 (PDT) MIME-Version: 1.0 References: <20230915095042.1320180-1-da.gomez@samsung.com> <20230915095042.1320180-7-da.gomez@samsung.com> In-Reply-To: <20230915095042.1320180-7-da.gomez@samsung.com> From: Yosry Ahmed Date: Fri, 15 Sep 2023 11:26:37 -0700 Message-ID: Subject: Re: [PATCH 6/6] shmem: add large folios support to the write path To: Daniel Gomez Cc: "minchan@kernel.org" , "senozhatsky@chromium.org" , "axboe@kernel.dk" , "djwong@kernel.org" , "willy@infradead.org" , "hughd@google.com" , "akpm@linux-foundation.org" , "mcgrof@kernel.org" , "linux-kernel@vger.kernel.org" , "linux-block@vger.kernel.org" , "linux-xfs@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-mm@kvack.org" , "gost.dev@samsung.com" , Pankaj Raghav Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 10BBF1C0025 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: geg7r6r1uyy66amna36k4m6xcsttghhz X-HE-Tag: 1694802437-449716 X-HE-Meta: U2FsdGVkX19bGvJNYlIij1O5g85NAJYNPEXTG8/RqdmF+MCaqgdY/Oj7Ci7KjGWTQ+6bydOxuQBD1CyH5cnl3xXdQ1PydqHxkgP5AUgL4oF+NeZ4fz5WyqRFbZnm2sxL5KxdGBOwgW0zBpJIqrDWllJtmtmoROtnC/lUcGOibbhsCJTdrS0opQu55OeQA4CKFVP2cM+KPYYh9ShUDQZltAg8PBWVGfg64Tu9Cb3gcfxuuemuYAjrlhisYaqh8orG8x/iR++P1NiPSW6eZq1CuOTHNiVzq8Rqj3+CvywGg2aHm4AvkgbwDWE1uKH1Nz2feIQFu0/EC/0cu0Bfvff+1qg8EyAKT4RVp6QTb+SBcmpuqeR3yDk3pem2lukLi33QRsPMcr7Tq5fu4mNbfoQnY0XJz13Xlj/0B1TflLBH5oVxS6ZEZFv/OKbM6SXijEKTOdrs8+IYqQIL0tIHcPfZ/+hSkqc+Yd3krKruYPOvQTBA51JQrVPIf4hEMdbB9qmTmzc7JWnmawZlPddljgXfmnh/SohJ6jaVCeAV/XoD9miZYx5U44C1Dz73MATUlskEYQVnE9vYqKcLgmQqbXXNQWahUekNnsklk4w9rzlr3JLC25zEPFVlNJleTVilkzWAwfwvv1gnpePxO2eiGFKhbhvJ4CoTPIfuPEQB19USp9A7/1Fl9mcHG3MSOLwIjpeQkDZx8XtasWZSKhVORgI7vcYXc5t34+KYDsfbvc5TX4fb3ZGgQO/SCxrcFlTd3be1UDxzhIcwrnalXsqcZf7MbKb3nikETSP2CCxXCbGWnumBL84yf0dJD3VgOArCsK73/YTK6Zrrrw9/2HC3CQnaOCPsSwWQtCZctiaaLeQxMH1m1mzHaxxVl8QnoaKLdUvKcyeGI/v2expGQMZ5CyXYbVK0SWj7xv9Kl9wcIMerTHcV4vnCTRtu0GNrAS1bshpiXpPMsaS8YAs+RdGB72c gzBCGwMM odYz8VPJQnkpStDWtjlrcs/N8X3E2+mZL8sDai2WZDM70yWaN7T/cTg+4YJQvanaDph/j+AGz0679/PMmPBxOXiSVqvSL6ybTpYZAnJ527Zd9HT6T0fU8XnYuOB2a0X5DBMeRkEn1pM/rsJWvpon2gbS6bgJCU0vRk5thFYR/nOyHeo9T9HJRS6+ufVrUTM7zi7CfbrAQ2lZRqxJoDbZjiKctjyo6lK3mV/vfT2l3rDvtQtZB6oa4Wc/4TtvcKFj5Muen9bntLYPYfc0VJ8QG9o2bebzEo4lnznKW 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 Fri, Sep 15, 2023 at 2:51=E2=80=AFAM Daniel Gomez = wrote: > > Add large folio support for shmem write path matching the same high > order preference mechanism used for iomap buffered IO path as used in > __filemap_get_folio(). > > Use the __folio_get_max_order to get a hint for the order of the folio > based on file size which takes care of the mapping requirements. > > Swap does not support high order folios for now, so make it order 0 in > case swap is enabled. I didn't take a close look at the series, but I am not sure I understand the rationale here. Reclaim will split high order shmem folios anyway, right? It seems like we only enable high order folios if the "noswap" mount option is used, which is fairly recent. I doubt it is widely used. > > Signed-off-by: Daniel Gomez > --- > mm/shmem.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index adff74751065..26ca555b1669 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -1683,13 +1683,19 @@ static struct folio *shmem_alloc_folio(gfp_t gfp, > } > > static struct folio *shmem_alloc_and_acct_folio(gfp_t gfp, struct inode = *inode, > - pgoff_t index, bool huge, unsigned int *order) > + pgoff_t index, bool huge, unsigned int *order, > + struct shmem_sb_info *sbinfo) > { > struct shmem_inode_info *info =3D SHMEM_I(inode); > struct folio *folio; > int nr; > int err; > > + if (!sbinfo->noswap) > + *order =3D 0; > + else > + *order =3D (*order =3D=3D 1) ? 0 : *order; > + > if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) > huge =3D false; > nr =3D huge ? HPAGE_PMD_NR : 1U << *order; > @@ -2032,6 +2038,8 @@ static int shmem_get_folio_gfp(struct inode *inode,= pgoff_t index, > return 0; > } > > + order =3D mapping_size_order(inode->i_mapping, index, len); > + > if (!shmem_is_huge(inode, index, false, > vma ? vma->vm_mm : NULL, vma ? vma->vm_flags := 0)) > goto alloc_nohuge; > @@ -2039,11 +2047,11 @@ static int shmem_get_folio_gfp(struct inode *inod= e, pgoff_t index, > huge_gfp =3D vma_thp_gfp_mask(vma); > huge_gfp =3D limit_gfp_mask(huge_gfp, gfp); > folio =3D shmem_alloc_and_acct_folio(huge_gfp, inode, index, true= , > - &order); > + &order, sbinfo); > if (IS_ERR(folio)) { > alloc_nohuge: > folio =3D shmem_alloc_and_acct_folio(gfp, inode, index, f= alse, > - &order); > + &order, sbinfo); > } > if (IS_ERR(folio)) { > int retry =3D 5; > @@ -2147,6 +2155,8 @@ static int shmem_get_folio_gfp(struct inode *inode,= pgoff_t index, > if (folio_test_large(folio)) { > folio_unlock(folio); > folio_put(folio); > + if (order > 0) > + order--; > goto alloc_nohuge; > } > unlock: > -- > 2.39.2 >