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 353F1C3DA63 for ; Fri, 26 Jul 2024 06:50:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B84056B009B; Fri, 26 Jul 2024 02:50:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B336F6B009C; Fri, 26 Jul 2024 02:50:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D4966B009D; Fri, 26 Jul 2024 02:50:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 7DE326B009B for ; Fri, 26 Jul 2024 02:50:15 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id EA357A159F for ; Fri, 26 Jul 2024 06:50:14 +0000 (UTC) X-FDA: 82380979548.04.0AAC87D Received: from mail-il1-f180.google.com (mail-il1-f180.google.com [209.85.166.180]) by imf24.hostedemail.com (Postfix) with ESMTP id 15E6F180003 for ; Fri, 26 Jul 2024 06:50:12 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="xZV/DpSU"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of yuzhao@google.com designates 209.85.166.180 as permitted sender) smtp.mailfrom=yuzhao@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721976611; a=rsa-sha256; cv=none; b=fPu18MpbByfeMJcspPhap74y6GsxsUf6idh6tHiLqNHcMxxDwiRMzyMjlE8fyBPARGeUuR 0oPsuVdMcrYPL1X57Wc5TdCqE88qdfMiQF25zo5UbQiuz9JlIpFR/eSCbtgYgg9kJjIumZ EBdhJq2SavQIzTo2fGHv42/6wmM6Xbc= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="xZV/DpSU"; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf24.hostedemail.com: domain of yuzhao@google.com designates 209.85.166.180 as permitted sender) smtp.mailfrom=yuzhao@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721976611; 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=yrDGVDfcbEdzvzB7i8L7n3jr8ddDBA4qpsWKmnewmuA=; b=q4w+Y+3kXmns+7MdF5TWbGOLg7h24sat8E/b1oJ+jdJJyTl2/0MX2AxU+Ac3SKOCYfpZaf UgDNcfjjka0VdWBVEbxqR8YRXQ9uZo0iSsk07HxCqE93M9eRjDWRnAbZGFDUu5Nu9D3fC7 eZQBO1kciBPgjy25jxkVCwFJwHybXYM= Received: by mail-il1-f180.google.com with SMTP id e9e14a558f8ab-398b599593eso73535ab.1 for ; Thu, 25 Jul 2024 23:50:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721976612; x=1722581412; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=yrDGVDfcbEdzvzB7i8L7n3jr8ddDBA4qpsWKmnewmuA=; b=xZV/DpSUPd2ZbbRwsQC9wkTHCKpoBMzwyfMDjpi0sFyHxJx6KQ85GAbwAZLcTIbie4 Hd0KNTTcuw9luYbgbfYgiSV/GU2h2NC64Vmwg1Zf3o6CugdH7kR5ZAEieCJv4thZWs1M D7hRow5plusd5dwv9vTqSezRsgZwyQ1BkB2j2eg9xI5m1bssbX0UUWhilAwZl2Wq+5Nh DYAVRgKvtQhoGM8OpHWRHEpahHM5ZeEcDRFZUfKbgYpWD1sDPvWoDPPWJEtGg5vXDoh0 Mc983LYNwHmp82hxqbDh+4DxvcpaSLk0oiWkbyPI0KAGL5xbU78bKyZyaTsMGkzxeO/x 3rRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721976612; x=1722581412; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yrDGVDfcbEdzvzB7i8L7n3jr8ddDBA4qpsWKmnewmuA=; b=XUN7hNHs13eaEsi/EIZlJu0bPfYbH55iprxw3e9IV6AxDo9lz6BaQnjDQzb5QLG5VF d9M3bS2LE3d7lOc0UW/Bi64lzAoFVgZ5ni/4l9bbzy4zyj80GHIDGAtEOTSw3SCmz2Kc gSFotyW0Zw4XqPyioCGrppU7+Zei9hikIdpMyTdEMELYZwyFWo+fo769Ll9xueCa4d2h 5ll54RRcbfrpGr0JPB6TBAg+odDexBSGshBdFTPswn/T5998jkNxpDVetFU6lvvCGXbk bbhE7fYhkaUfV7CSAuBiN0Ad7h/YDkuYYGCiP4lGojQrGucpDRSLTpeazfbaKXILVvP8 6FPg== X-Forwarded-Encrypted: i=1; AJvYcCVqpUvHaVJnmrZfIkDSkL/M9/ImH9wfUGMqdxXJT5MlCqmBVKt7zqV46iuIDrqvuPjb8YTNWrq4ImNQ8L2BmL9kXmA= X-Gm-Message-State: AOJu0YwuRE4E1wpgEsJvQF5nuu1wVwuzfpV25CKrdXTiTx4HP8nS81ov 7ahEJPJO+JlSJafq0PdgBU4IKsc2tN/gvhrNTJKMWRA8dRybpEJF7U0HFjlZKA== X-Google-Smtp-Source: AGHT+IFhMmDduA5a1iE2vV0TLq5eSikCuAjR0q61Pqxg01+Hqyhn16WkR44U4x1SYv2rEC7ihuvi+Q== X-Received: by 2002:a05:6e02:b43:b0:377:1653:a1da with SMTP id e9e14a558f8ab-39a2b465e7dmr1927825ab.19.1721976611827; Thu, 25 Jul 2024 23:50:11 -0700 (PDT) Received: from google.com ([2a00:79e0:2e28:6:7804:a7e1:484d:96f2]) by smtp.gmail.com with ESMTPSA id ca18e2360f4ac-81f7d800e00sm92951939f.41.2024.07.25.23.50.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jul 2024 23:50:11 -0700 (PDT) Date: Fri, 26 Jul 2024 00:50:04 -0600 From: Yu Zhao To: Barry Song <21cnbao@gmail.com> Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH mm-unstable v1 5/5] mm/swap: remove boilerplate Message-ID: References: <20240711021317.596178-1-yuzhao@google.com> <20240711021317.596178-6-yuzhao@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspam-User: X-Rspamd-Queue-Id: 15E6F180003 X-Rspamd-Server: rspam01 X-Stat-Signature: 7mdpo4b93pacjpxkau7hp8fsn13z88io X-HE-Tag: 1721976612-141730 X-HE-Meta: U2FsdGVkX1+IhefwGvBNsnRsqDNrOFUE2cDw1n5Oj50e4PdNmuUdG59cEviOCmohjLfckEfB2AZjkPlWHaqD5GNQu578cJSG5FSnzCdhAzTH/eVezesIb/yfADJ5awV1iHN/3pCZL9WE3oK9IqrpaEYs1Ct7r9ERwKo0JNrsHZaYbRBkd3ltUt/uaRmdZO5onmm339FAoo0ql6lshpUqqy4otQ/KzGzvyg8sEG+ZOdfBfgT384w5kHVTOb3vJ/YSInTjIu18zcXTTC29PFzXkhsa5n//IDlEnVx6J7BD21qk9nsTs8HbH/PFn1bA072YXtUpF0AiIbXItqdbSx4PV8vmV2sMp45G+Ez+eMlMGtTWo7Won8FNYnW7ajJlz2wO/nvzyUXivBDABZnfNKWvRrTp2SzCLcVFIQoRAP2OpLiilwoT6cNmqg28b1o0TXs71jCH5F2JplUTdd50DSM6/jVyEOK9ve9qq/iPC+KHKwDrscj78qcMD06FUOxQZjoqZ7dYoSrDfT8uCALXr8mB3R3ZjMClhJdYsrQwGEv54jbQzRNVfmmKexPwpMB/jM2rVIcjsyPebT+1FncGBN7yJA9PIS0pi2Bmgm9pKJpJmoxj8IHoF9VCMQWL+kj44iSF45WzrfZcICPMCrpPZxgr4Lf9U+CLZIY0+d0b8pI++jX7cHbmNFeHXqGJBTZXudW06dE668xF0U2iKjDVRNPhf3oOHD3SbKfXm2JaQLbwe2K3JiadjsjdsO/T9v5mk2kNeLidWojSNp+qn6+DsqP5Gs2cpoaGjWDfRerVQDwGNuubuS4sqfXd9VNYF1HwGGF+Abm+dbG5E9AQFbrdUzDMP4M7TEgAFDEP1fP6WFlGQRg3PbbnQcToxPYP8CxIN7kGOhGNWt9M8QTspEUUciDXvCwvOsVlHQmC/89XgnckwEscJjQyny4/8e5x8HHYhydvGXpTToC9jEd9XAZS2q/ ILcG1Nkb VGbKWWBvqtCwgDAdc7cs47e340LB2a0axRZd/3CglVZiSU3T0QiepjD8VZyidrVrSf7nP1QVV6UisOISjAKRxdmw8QsFpsRKTSY6h5kpHhmScDxMoid6eiKhW12lnF+ePir3Eg5emXEsw4X+VbLWNyBETd0QEkf+WaqgYqASpr3DJqjDsi2EtHB0fp8/vCvwwZah6s4QiJ1qurViLjZIzuQ8PSAP43bZjAl8Y3vRk7c2YZp6HytLLK2eN39TJntrrHodE4woCpvwwaQchdbDQYmJWA+9FAj2n9WOxU/BGBshZpNrNnfnrwqayzDkmJYh8e2LjVXSD8e5K3bHNlGSP7j3WsEL/wIvma5WBWxWQDJ5THr1xRroXAjsoOfQFlr2K49sr 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 Fri, Jul 26, 2024 at 05:56:10PM +1200, Barry Song wrote: > On Fri, Jul 26, 2024 at 5:48 PM Barry Song <21cnbao@gmail.com> wrote: > > > > On Thu, Jul 11, 2024 at 2:15 PM Yu Zhao wrote: > > > > > > Remove boilerplate by using a macro to choose the corresponding lock > > > and handler for each folio_batch in cpu_fbatches. > > > > > > Signed-off-by: Yu Zhao > > > --- > > > mm/swap.c | 107 +++++++++++++++++++----------------------------------- > > > 1 file changed, 37 insertions(+), 70 deletions(-) > > > > > > diff --git a/mm/swap.c b/mm/swap.c > > > index 4a66d2f87f26..342ff4e39ba4 100644 > > > --- a/mm/swap.c > > > +++ b/mm/swap.c > > > @@ -220,16 +220,45 @@ static void folio_batch_move_lru(struct folio_batch *fbatch, move_fn_t move_fn) > > > folios_put(fbatch); > > > } > > > > > > -static void folio_batch_add_and_move(struct folio_batch *fbatch, > > > - struct folio *folio, move_fn_t move_fn) > > > +static void __folio_batch_add_and_move(struct folio_batch *fbatch, > > > + struct folio *folio, move_fn_t move_fn, > > > + bool on_lru, bool disable_irq) > > > { > > > + unsigned long flags; > > > + > > > + folio_get(folio); > > > + > > > + if (on_lru && !folio_test_clear_lru(folio)) { > > > + folio_put(folio); > > > + return; > > > + } > > > + > > > if (folio_batch_add(fbatch, folio) && !folio_test_large(folio) && > > > !lru_cache_disabled()) > > > return; > > > > > > + if (disable_irq) > > > + local_lock_irqsave(&cpu_fbatches.lock_irq, flags); > > > + else > > > + local_lock(&cpu_fbatches.lock); > > > + > > > folio_batch_move_lru(fbatch, move_fn); > > > + > > > + if (disable_irq) > > > + local_unlock_irqrestore(&cpu_fbatches.lock_irq, flags); > > > + else > > > + local_unlock(&cpu_fbatches.lock); > > > } > > > > > > +#define folio_batch_add_and_move(folio, op, on_lru) \ > > > + __folio_batch_add_and_move( \ > > > + this_cpu_ptr(&cpu_fbatches.op), \ > > > + folio, \ > > > + op, \ > > > + on_lru, \ > > > + offsetof(struct cpu_fbatches, op) > offsetof(struct cpu_fbatches, lock_irq) \ > > > + ) > > > > I am running into this BUG, is it relevant? Sorry for the trouble. > > / # [ 64.908801] check_preemption_disabled: 1804 callbacks suppressed > > [ 64.908915] BUG: using smp_processor_id() in preemptible [00000000] > > code: jbd2/vda-8/96 > > [ 64.909912] caller is debug_smp_processor_id+0x20/0x30 > > [ 64.911743] CPU: 0 UID: 0 PID: 96 Comm: jbd2/vda-8 Not tainted > > 6.10.0-gef32eccacce2 #59 > > [ 64.912373] Hardware name: linux,dummy-virt (DT) > > [ 64.912741] Call trace: > > [ 64.913048] dump_backtrace+0x9c/0x100 > > [ 64.913414] show_stack+0x20/0x38 > > [ 64.913761] dump_stack_lvl+0xc4/0x150 > > [ 64.914197] dump_stack+0x18/0x28 > > [ 64.914557] check_preemption_disabled+0xd8/0x120 > > [ 64.914944] debug_smp_processor_id+0x20/0x30 > > [ 64.915321] folio_add_lru+0x30/0xa8 > > [ 64.915680] filemap_add_folio+0xe4/0x118 > > [ 64.916082] __filemap_get_folio+0x178/0x450 > > [ 64.916455] __getblk_slow+0xb0/0x310 > > [ 64.916816] bdev_getblk+0x94/0xc0 > > [ 64.917169] jbd2_journal_get_descriptor_buffer+0x6c/0x1b0 > > [ 64.917590] jbd2_journal_commit_transaction+0x7f0/0x1c88 > > [ 64.917994] kjournald2+0xd4/0x278 > > [ 64.918344] kthread+0x11c/0x128 > > [ 64.918693] ret_from_fork+0x10/0x20 > > This removes the BUG complaint, but I'm unsure if it's the correct fix: Below is the proper fix. Will post v2. --- a/mm/swap.c +++ b/mm/swap.c @@ -221,7 +221,7 @@ static void folio_batch_move_lru(struct folio_batch *fbatch, move_fn_t move_fn) folios_put(fbatch); } -static void __folio_batch_add_and_move(struct folio_batch *fbatch, +static void __folio_batch_add_and_move(struct folio_batch __percpu *fbatch, struct folio *folio, move_fn_t move_fn, bool on_lru, bool disable_irq) { @@ -234,16 +234,14 @@ static void __folio_batch_add_and_move(struct folio_batch *fbatch, return; } - if (folio_batch_add(fbatch, folio) && !folio_test_large(folio) && - !lru_cache_disabled()) - return; - if (disable_irq) local_lock_irqsave(&cpu_fbatches.lock_irq, flags); else local_lock(&cpu_fbatches.lock); - folio_batch_move_lru(fbatch, move_fn); + if (!folio_batch_add(this_cpu_ptr(fbatch), folio) || folio_test_large(folio) || + lru_cache_disabled()) + folio_batch_move_lru(this_cpu_ptr(fbatch), move_fn); if (disable_irq) local_unlock_irqrestore(&cpu_fbatches.lock_irq, flags); @@ -253,7 +251,7 @@ static void __folio_batch_add_and_move(struct folio_batch *fbatch, #define folio_batch_add_and_move(folio, op, on_lru) \ __folio_batch_add_and_move( \ - this_cpu_ptr(&cpu_fbatches.op), \ + &cpu_fbatches.op, \ folio, \ op, \ on_lru, \