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 C7A01C282D1 for ; Thu, 6 Mar 2025 07:41:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 562706B007B; Thu, 6 Mar 2025 02:41:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 511696B0082; Thu, 6 Mar 2025 02:41:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3B2906B0083; Thu, 6 Mar 2025 02:41:09 -0500 (EST) 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 201FC6B007B for ; Thu, 6 Mar 2025 02:41:09 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 59B8EB86BC for ; Thu, 6 Mar 2025 07:41:09 +0000 (UTC) X-FDA: 83190330258.17.7927ACE Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) by imf20.hostedemail.com (Postfix) with ESMTP id CA0D31C0005 for ; Thu, 6 Mar 2025 07:41:05 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=TP7pAvaV; spf=pass (imf20.hostedemail.com: domain of s.suk@samsung.com designates 203.254.224.33 as permitted sender) smtp.mailfrom=s.suk@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741246866; 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: references:references:dkim-signature; bh=+BcYtXY3TNCTI9bTILp9kA5TJ6CO/fCWbh8+ui2EJZE=; b=M5KTqTWXCwJO5ASCzhpTGlJFIngS7LHXTuxwO3bamzoOSOtAQeQvQ+5JbEMWLNfo5VujqS FNzGT1rdmffZKXbZNjL+8W8ws70y0DvF3iDwhYliKNYGHctCJRUJ0Bfj7O7psFX/+xPZfG awotvuC3qFqTnwcYWgVZs62yFBKvcSI= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=samsung.com header.s=mail20170921 header.b=TP7pAvaV; spf=pass (imf20.hostedemail.com: domain of s.suk@samsung.com designates 203.254.224.33 as permitted sender) smtp.mailfrom=s.suk@samsung.com; dmarc=pass (policy=none) header.from=samsung.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741246866; a=rsa-sha256; cv=none; b=10/28U5MoTXOd8NMUuxGC496Mfz41jEfhg32vjxi++nqnycR7MtvHOPU20Wz66hjqpz1yK hPsMGwHscPUgPnMRBhtg2ZFVjlLjNK9bJr5k6o0QO/GpZe1l9aRUuQJkAgZCz5wcZwfICq LYD4IFf+hxw9utScnHvQFMlDtJ+KGq0= Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout3.samsung.com (KnoxPortal) with ESMTP id 20250306074102epoutp037231a16e942db1263805a2bace96bd8d~qJsvLX_GM2463124631epoutp03p for ; Thu, 6 Mar 2025 07:41:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout3.samsung.com 20250306074102epoutp037231a16e942db1263805a2bace96bd8d~qJsvLX_GM2463124631epoutp03p DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1741246862; bh=+BcYtXY3TNCTI9bTILp9kA5TJ6CO/fCWbh8+ui2EJZE=; h=From:To:Cc:Subject:Date:References:From; b=TP7pAvaVCf2JIQRIjYvDQCc98pgRGwEzwaXHlg+9npR0i50LpBI7460fI5ej7ApxG C1ntbPkN8IyJwMc4N+q3cogmanTnGkaxs62WdFSbo/hS1AaUGpACX4kAJXkzxedCne LbEeieWL2PZeJluGQ+VejtZyAm8AIZGqq4OYtzEc= Received: from epsnrtp2.localdomain (unknown [182.195.42.163]) by epcas1p2.samsung.com (KnoxPortal) with ESMTP id 20250306074102epcas1p26db72044cac9fc5ad35bc25620d57683~qJsulLgnq3185131851epcas1p2d; Thu, 6 Mar 2025 07:41:02 +0000 (GMT) Received: from epsmgec1p1.samsung.com (unknown [182.195.38.249]) by epsnrtp2.localdomain (Postfix) with ESMTP id 4Z7hDY468hz4x9Q3; Thu, 6 Mar 2025 07:41:01 +0000 (GMT) Received: from epcas1p2.samsung.com ( [182.195.41.46]) by epsmgec1p1.samsung.com (Symantec Messaging Gateway) with SMTP id 70.AB.23869.D8159C76; Thu, 6 Mar 2025 16:41:01 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas1p4.samsung.com (KnoxPortal) with ESMTPA id 20250306074101epcas1p4b24ac546f93df2c7fe3176607b20e47f~qJstzgcQv0358703587epcas1p4T; Thu, 6 Mar 2025 07:41:01 +0000 (GMT) Received: from epsmgms1p2new.samsung.com (unknown [182.195.42.42]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20250306074101epsmtrp11f529e534244b62ce4ee1f99afb80464~qJstx3QsH2853928539epsmtrp1b; Thu, 6 Mar 2025 07:41:01 +0000 (GMT) X-AuditID: b6c32a36-6f5e970000005d3d-94-67c9518d8709 Received: from epsmtip1.samsung.com ( [182.195.34.30]) by epsmgms1p2new.samsung.com (Symantec Messaging Gateway) with SMTP id B8.C0.18949.D8159C76; Thu, 6 Mar 2025 16:41:01 +0900 (KST) Received: from localhost.localdomain (unknown [10.253.104.238]) by epsmtip1.samsung.com (KnoxPortal) with ESMTPA id 20250306074101epsmtip16dc04253f077b5685d15b9ca4bb30795~qJstoXnpM1818718187epsmtip1C; Thu, 6 Mar 2025 07:41:00 +0000 (GMT) From: Sooyong Suk To: viro@zeniv.linux.org.uk, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, linux-mm@kvack.org Cc: jaewon31.kim@gmail.com, spssyr@gmail.com, Sooyong Suk Subject: [RFC PATCH] block, fs: use FOLL_LONGTERM as gup_flags for direct IO Date: Thu, 6 Mar 2025 16:40:56 +0900 Message-Id: <20250306074056.246582-1-s.suk@samsung.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOKsWRmVeSWpSXmKPExsWy7bCmnm5v4Ml0gylnpC3mrF/DZtG9eSaj xeVdc9gs7q35z2qx6O8Vdot7dxvYLc7/Pc7qwO6xc9Zddo9Nnyaxe5yY8ZvFo2/LKkaPz5vk PDY9ecsUwBaVbZORmpiSWqSQmpecn5KZl26r5B0c7xxvamZgqGtoaWGupJCXmJtqq+TiE6Dr lpkDdIuSQlliTilQKCCxuFhJ386mKL+0JFUhI7+4xFYptSAlp8CsQK84Mbe4NC9dLy+1xMrQ wMDIFKgwITtj388DzAWrRSuuvt7E2MB4T7CLkZNDQsBEYuqDJUxdjFwcQgI7GCU+HX7CCOF8 YpT4fKmPHcL5xihx5k4TO0zL0/3/2CASexklDnRuY4ZwvjBKbDj6hA2kik1AVeLNjZtAszg4 RASyJJ6vTgIJMwv4S1z/dowRxBYW8JG4u2o+K4jNAlT+/tEDsAW8AuYSkydtYIVYJi8x89J3 qLigxMmZT1gg5shLNG+dDbZXQuAau8Sa3Y1QDS4SU9/NYIKwhSVeHd8CdbWUxMv+Nii7WOJX 30dWiOYGRon+Y0uYIRL2Eiv2d7KCHM0soCmxfpc+xDI+iXdfe8DCEgK8Eh1tQjC3/d50gQUi LCqx7Y0DhOkhcW2OP0iFkECsxOvFM9knMMrNQvLALCQPzEJYtYCReRWjWGpBcW56arFhgRE8 HpPzczcxglOgltkOxklvP+gdYmTiYDzEKMHBrCTCe9HvZLoQb0piZVVqUX58UWlOavEhRlNg kE5klhJNzgcm4bySeEMTSwMTMyMTC2NLYzMlcd4L21rShQTSE0tSs1NTC1KLYPqYODilGpgk NThXG2ikbn2qutOAebUXh4hI3AWOSaqf5/lMm3Y/4MRr+y972X78jOa2ElMsWD41v8VLxul0 w36fkxLn4v9lz3ZmmOnaeyom78jWF5Omx53M70nRMDy9v5ZxlfHrTyeWam7VFVgwV+vIvlKf kOLHdrNeT0s8ZsmT+ibv1Y3E2W7Kd8VjWW7JH3xyROHYmqZH7u9q/V6V7A29J7nnsu8Ss/xj xxZFSVT+WvFQcOFLC4FDrm7t9wtO+askrvFiSGjMyLtjOvHSW9aPfXF27xYGr30c8HBl2sc2 ft4tLsc+iT6tY9zY37NNIzvedrf3hIuiUo479a69FHp06VBEybm093KR5RvVvPrUbbPfbj6u xFKckWioxVxUnAgAWXfzEAoEAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrELMWRmVeSWpSXmKPExsWy7bCSnG5v4Ml0g/eb2CzmrF/DZtG9eSaj xeVdc9gs7q35z2qx6O8Vdot7dxvYLc7/Pc7qwO6xc9Zddo9Nnyaxe5yY8ZvFo2/LKkaPz5vk PDY9ecsUwBbFZZOSmpNZllqkb5fAlbHv5wHmgtWiFVdfb2JsYLwn2MXIySEhYCLxdP8/ti5G Lg4hgd2MEs9btjJBJEQlnv3+xtLFyAFkC0scPlwMUfOJUWLNrK1sIDVsAqoSb27cZASpERHI k3jeHQMSZhYIlDjxuZUdxBYW8JG4u2o+K4jNAlT+/tEDsDivgLnE5EkbWCFWyUvMvPQdKi4o cXLmExaIOfISzVtnM09g5JuFJDULSWoBI9MqRsnUguLc9NxiwwKjvNRyveLE3OLSvHS95Pzc TYzgYNXS2sG4Z9UHvUOMTByMhxglOJiVRHgv+p1MF+JNSaysSi3Kjy8qzUktPsQozcGiJM77 7XVvipBAemJJanZqakFqEUyWiYNTqoHpqtCEx7os8o3l3rUvI0UUj2htZPLaLmDiXszzenb5 3n1SFtlPHU80PJ62w8yzsiVQd1vEVOvAqwE/LR7pL43IPVnQ7HLlUaHnTg//ncsnb5u6M/fd sknu3BbiH/Jf35LVmrVyknbP0n1nr3CGrQl4Hf38/g6v07dYOvu23ejT9Pkz60hbgYXYQd+Z msvnJVwwn7zm+IWjAXM2zfrd7nZrypuJEUJhT3ek/TFg+/foMadC5p+T6bWHZF/suKA340LN 77rZ9oeDk0ttL+/tuPjhvIb/TY81qt9cIvkiyk3b9X7td0wJumrUr7RC0+1vh7uROLuVdvLn w42xxoWl1h3qU0+KF6ZqqPTOetw2o/e9EktxRqKhFnNRcSIAL76Q+MUCAAA= X-CMS-MailID: 20250306074101epcas1p4b24ac546f93df2c7fe3176607b20e47f X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20250306074101epcas1p4b24ac546f93df2c7fe3176607b20e47f References: X-Stat-Signature: a6f9ppbm1rpitt9ozhgcf79ro5t81ogb X-Rspamd-Queue-Id: CA0D31C0005 X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1741246865-697236 X-HE-Meta: U2FsdGVkX190ob0fZAygv1rTnVpnRLs9Ds9mFg9g0jMy9l7eFJHjRlEn/lQP/Rbi64FNNwOY0z/G/AQKOehTpd9PlO4CLWINhWVfmOzKB+7QysfDUIC82yqCV8xBmKFehv5hd9u/Ur5BZ+CpWFn/gWjQIGc6z336evFeqZnJvRJIWcjPFplqqqONTiva4/JFUlBayprxDceuxGpMxw/wlKM7cMwcWXubzPX8kMOF2/tKeDmnjWzhngwrha4ewyCIBgtx0iJZs/LpRbWCz7sshH+jADzEjREszWKJIZr0rohlfPmb3451QB+32tCC4zmoiyGw0hpkc7kJBWihXtPbMc4kglYBMPcEfYPVAPlNyjEtqLReHn7JWRXJ/ZSg5ozOWxCORmSBxyukoc3++4kmwdnJjMYLXcvigWdGY+axLQmvBphznJ0gkw4/kltf7s6NCrJXocH86QB0+RMBJVjeLGuc+xRSx75LTGB+96AqYINYGuiBnFXwTUnxdz1uKo4HdieRUHDvRE6ZUe6+ABuHhUp/9i7+kmMOWBdBxJZQ8y8Y1a9YGW2AOGVF5wWKDURUEsnkBuwIvVsCwCzfvwSNxleC3mpB+VQFI7b0MYSlc54zP1H54czNSLqaZeHQmlL+oaHEOqUSSUf7nT7tjxX9rFUEMf9UKsVCcUTZVhrpKI/g5sYFF3pTX/LLo4HiO3xiqsGLXauG86E+fnRgA3+K0J+NJ7QIzBKX3Tm8L4q6GbtYR1A3ILeP8STlxU3cfGC8elqWHvlwGxinM9Peesws/UFwn3sDK0M0br+oykRQz4cXREqHfFALwwJGAb8sM2eG/C8PK8OiV6qwqRwfzwYMYY25KXGA0xNmQKuuwuo5UTfigIFvDdm3D6aDwQZ7Dk9E4db0qrbGI6z62CR/1681wl2IxmcEElb5kYpue9tCGAEKe1EBPyTh+tEDwVDWWZw+HRPv+trrB6aAgVx+UR/ VlsHjPWU J4Lh0hGxjF2UQYERNuq4RSvi9bRDNvtMjefaXnvtUbtBeyoQfw/UUFNcdzTVEvZ+iU2IyLQ22zZpT9VfLsaUsXOzoqPLZATM/ZcUk2PBXVH4TZr+4yu42rCqpbDHoNFoDQ0F8UKd0B8uUoeZGGSj2e2LhNCi7V7n59+EGWbzjnCdFjq9hMfFydpHX5QhCtOMd3AuM8EZt4/c4a2LnP47valeZig== 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: There are GUP references to pages that are serving as direct IO buffers. Those pages can be allocated from CMA pageblocks despite they can be pinned until the DIO is completed. Generally, pinning for each DIO might be considered as a transient operation as described at the documentation. But if a large amount of direct IO is requested constantly, this can make pages in CMA pageblocks pinned and unable to migrate outside of the pageblock, which can result in CMA allocation failure. In Android devices, on first boot after OTA, snapuserd requests a huge amount of direct IO reads which might occasionally disturb CMA allocations. To prevent this, use FOLL_LONGTERM as gup_flags for direct IO requests via blkdev_direct_IO or __iomap_dio_rw by default not to allocate buffer pages from CMA pageblocks. Signed-off-by: Sooyong Suk --- block/bio.c | 2 +- include/linux/uio.h | 2 ++ lib/iov_iter.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/block/bio.c b/block/bio.c index d5bdc31d88d3..683113b3e35a 100644 --- a/block/bio.c +++ b/block/bio.c @@ -1247,7 +1247,7 @@ static unsigned int get_contig_folio_len(unsigned int *num_pages, */ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter) { - iov_iter_extraction_t extraction_flags = 0; + iov_iter_extraction_t extraction_flags = ITER_ALLOW_LONGTERM; unsigned short nr_pages = bio->bi_max_vecs - bio->bi_vcnt; unsigned short entries_left = bio->bi_max_vecs - bio->bi_vcnt; struct bio_vec *bv = bio->bi_io_vec + bio->bi_vcnt; diff --git a/include/linux/uio.h b/include/linux/uio.h index 853f9de5aa05..d1e9174ee29a 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -377,6 +377,8 @@ static inline void iov_iter_ubuf(struct iov_iter *i, unsigned int direction, /* Flags for iov_iter_get/extract_pages*() */ /* Allow P2PDMA on the extracted pages */ #define ITER_ALLOW_P2PDMA ((__force iov_iter_extraction_t)0x01) +/* Allow LONGTERM on the extracted pages */ +#define ITER_ALLOW_LONGTERM ((__force iov_iter_extraction_t)0x02) ssize_t iov_iter_extract_pages(struct iov_iter *i, struct page ***pages, size_t maxsize, unsigned int maxpages, diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 9ec806f989f2..4b5c7c30cd4d 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -1832,6 +1832,8 @@ static ssize_t iov_iter_extract_user_pages(struct iov_iter *i, gup_flags |= FOLL_WRITE; if (extraction_flags & ITER_ALLOW_P2PDMA) gup_flags |= FOLL_PCI_P2PDMA; + if (extraction_flags & ITER_ALLOW_LONGTERM) + gup_flags |= FOLL_LONGTERM; if (i->nofault) gup_flags |= FOLL_NOFAULT; -- 2.25.1