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 444FBC54E76 for ; Mon, 20 Nov 2023 11:15:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CE7316B043F; Mon, 20 Nov 2023 06:15:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C70916B0440; Mon, 20 Nov 2023 06:15:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AE9FB6B0441; Mon, 20 Nov 2023 06:15:46 -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 960E96B043F for ; Mon, 20 Nov 2023 06:15:46 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 7484B1A0159 for ; Mon, 20 Nov 2023 11:15:46 +0000 (UTC) X-FDA: 81478077492.08.B6BA52D Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) by imf06.hostedemail.com (Postfix) with ESMTP id 8E49B180018 for ; Mon, 20 Nov 2023 11:15:44 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Fa97ScZh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf06.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.175 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1700478944; 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=GCEH2OhSh1wtb14SLQZhMNkQFOWqwz8F0y6cfbziznw=; b=dXkRa67Z1R9RIhMGz6+tWyIZmK6K9tt2Uee8MbefOkCdcCQHliC2k7v8KDV6KerpPdEFGv 59BWcXrdu6ijRt5dl9RRk0lKLiDq1i/ikYAW7M6tvEVHvva8QujElUbU+5GfTvwMVdWcsB QwvwFI6b6yFdpXRFVVaqn8TRGGDV/tA= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Fa97ScZh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf06.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.175 as permitted sender) smtp.mailfrom=ryncsn@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1700478944; a=rsa-sha256; cv=none; b=PVKtiCg3p1UhyQ3cMmh7fBy0tgMz9g7E/sJkHXpTAew5qsv2MLoayTr83DBTPxBnzgj8Ot WrJg3tPww4lIiqc70k3n6hq3GhJWyfFUOlk/aREsWV0vx9c4nLb334Y0Qu6GnL2qQGZMwt o2ueJroGWs9z8ekKwq4AQE4NyrSzjSU= Received: by mail-lj1-f175.google.com with SMTP id 38308e7fff4ca-2c72e275d96so52179291fa.2 for ; Mon, 20 Nov 2023 03:15:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700478943; x=1701083743; 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=GCEH2OhSh1wtb14SLQZhMNkQFOWqwz8F0y6cfbziznw=; b=Fa97ScZhswwiXJHV+y9+IA+J6dgmvvYh+noIR7eOQBC1sGT9WpB0MG5m7ebYC68F81 nxOMLTVKOlemw981IaCQy06mUgIciyvaYTx9z1PCjNdw8EBY4TVYqloNvvkcld3iodGl gkPvFx3arYhg965kpCk4bfL+/BFC7KC/stxk5KoBpp7G4nlsbPE2eKLZpj9icW3dSsUO 5GYlIbLRWve8lb8SMb5DOy2Rm8xwJxqOBIntStTStmOb1eXazP1WiNB7sINv+oNtD7XL 4Hbxl+soo5PNCXEZZ05Hm3ua7U8UAkd9+BT4cz00l32/7CZap4rm86RFNUSuxblhzN4H 5FcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700478943; x=1701083743; 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=GCEH2OhSh1wtb14SLQZhMNkQFOWqwz8F0y6cfbziznw=; b=mCiQyPAZyINH8iNh8ma/3eQ9+1p8DyrGJhQCMhg7cwCxPIE4TkmfPxM5SK7gpo4zY1 87jzavLe0FlTg6oI56Y3Edl7xbYsKM88ATk//ymZV5OUsdcrWSbSn/rE49vfKuQRXgaD gpwiTkeqpW/hw0i4WlBiIuIaPTOUmcrYR0oCw9pxFbIRYSgvM4nNZeP17O9ACBG/tj0/ 2YW9TOHL9Yy8hhCZO6n5uyu3J7d3i76Y5Kgqe6ArpzyqYw3cFrIsIYiJPR07b2/bC46V 8RJdNLaP55QxCB2jm4DHWLR1qHPRVML4frC4GhAqQoPw5+vf7cA4pppAf1Nk8Anf1B9I p2Pg== X-Gm-Message-State: AOJu0Yx1yS6XUSYtQpR7K/slNqvoU8Fg+oq/kPqbc2LlZMFZt4IURkuD XBOt7szIEii0qwMu3iA9Rq4H8SV1J416J82vPPI= X-Google-Smtp-Source: AGHT+IF5n5gAGiAyqw8nx/M9Y9DqsxUXIgsVPKnI6sLOE04ugWRfa1R84lxyi5u8UgH3nbITAeT48406+0Ri6tJ34bc= X-Received: by 2002:a2e:9348:0:b0:2c5:2221:614f with SMTP id m8-20020a2e9348000000b002c52221614fmr4209856ljh.45.1700478942832; Mon, 20 Nov 2023 03:15:42 -0800 (PST) MIME-Version: 1.0 References: <20231119194740.94101-1-ryncsn@gmail.com> <20231119194740.94101-5-ryncsn@gmail.com> In-Reply-To: From: Kairui Song Date: Mon, 20 Nov 2023 19:15:25 +0800 Message-ID: Subject: Re: [PATCH 04/24] mm/swap: avoid setting page lock bit and doing extra unlock check To: Chris Li Cc: linux-mm@kvack.org, Andrew Morton , "Huang, Ying" , David Hildenbrand , Hugh Dickins , Johannes Weiner , Matthew Wilcox , Michal Hocko , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 8E49B180018 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: wdoz5zfagawnxhqpjpknsbmj3ty8mbfo X-HE-Tag: 1700478944-841261 X-HE-Meta: U2FsdGVkX19lWh7g3U4TRUaVrMDCWldwUyg3gsrVeRit7Y1CMqv6N0zpbAer8GgzjxskTFpgv0gkkp7R7Duto1rdeXV2y3NwIkh1bS82j/utIjFQKi5/HiFaokGkkEvtY0bvwXN4x4fK1w3al+8Jwdabo13q+ZHsvFMk2KQLEKhK9G7y/Ed0aCx9g2j41haPuY6smP+jMTom2h3IxXVHaGpqaCJPEHaiqim6c83fdwT2+uOAk328ugn9gbOdrbR+HuY/c0N3kqQKLbb4og4Eve/derzJZ/vnXlAIA8MoxoLt0lNHO6y6Uo741jtziygPqoe2T1hbx3qL15cQaUNMpg45HEwjh5Eg2Gvh6JFMNjwy6gMOdfly1N25hLGJduQ5ALRAqOFWuAo5kwh0aRv536e6Uwpf7kmTKcWJqb7wfm2VV1DK7FkKr8BTQ1vmPmEgwYYs9iTpg9dK4oKBw8SEKcGbJ2oHGxZm3FYCol2rH+qB7ioyJJuiO/eb+8GwmkGZaM1M2SPS07iN4PzbMSW/PdwCOCzZrqRbEoPnFgzYrd44Uojbsd7RpGcryNeOptYU4/UNzh3cif3PsxZsff/DmL+Gc83tPk3rcSGEyDZPxAyvwBmQX/RipOGOKRtu1maRk5i2n6FJ/GsqGPuxCZRA7k6/jniqQjFgqq35qudD2fBNXLR9xJi/P8ptMn3SYFo1RZWjSZ8lX2ibgfgZCs2Ska9iXzXIo57jXpz8Kjer/uXE4i6TVj39Fb/D+Tr2H+ZDm+nKlx/QVFM4iDjNjnZr+5FL1PgSW2cb3metOWYR+3l+NlkTZ+i74nBKB6yhydTlm1m5JldEcaVPt+ud+IT+tNZILZ6shKbGHWh7ci5qw7j07smYQ3GvL4wAzYlzfLBK+uADsAGkjCdELg5vbHsBLWIoDZdZ5AYSQoCYANei1caE1DAouPIdDfRwYfSLkg8tiozYIn/zXHps2/9ZitD 4Q6/6pWQ jaKu8Iu4TkSG6lbafQF8EE9jhCnlEHByu4RrD+6sfvQb6YoG3ZCTNMlo7uzzEQHzz/UDHeqmdtcblc9yBe7437B2QFHTmsHg+D2vcYvGvAtlVwTiJvFvws+BZrcYpS2EpKXfOpkH63pTvj2/StuVcgqZ681nQrHGUTFtt4GcQQqmUIPO23EWso72jDgfD8tWhoUZyQwsCEST9AqeeQHKocAjZSS4Ylv/J2vUApcknk19vEM7U8BqnzpSbTvJtOm3UnlsVzAG1NrNTX7YZQSjXhkEQpXNDcsk19TCqAjIgh4JX7OpjdkRe3y0zkFrKLkDO2A+z5pGr2xbgHrrHTmty+ab+oxrQnjUGgdBjmMlN9KXDpVFtsynDJd7nbZ+iFTBiAkQ1i8OCn3J8WA7uHuJ8fGnJAuxIJGBD/JQ2VzQaXgg7OqzA2U4+hW8JeA5FQdjSl+ZHcxXZmA5YNJLPglryuwq6UVFQG8stfKDVNm/HW3AgcpJKTOgMu0FBEA== 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: Chris Li =E4=BA=8E2023=E5=B9=B411=E6=9C=8820=E6=97=A5= =E5=91=A8=E4=B8=80 12:18=E5=86=99=E9=81=93=EF=BC=9A > > On Sun, Nov 19, 2023 at 11:48=E2=80=AFAM Kairui Song w= rote: > > > > From: Kairui Song > > > > When swapping in a page, mem_cgroup_swapin_charge_folio is called for n= ew > > allocated folio, nothing else is referencing the folio so no need to se= t > > the lock bit. This avoided doing unlock check on error path. > > > > Signed-off-by: Kairui Song > > --- > > mm/swap_state.c | 20 +++++++++----------- > > 1 file changed, 9 insertions(+), 11 deletions(-) > > > > diff --git a/mm/swap_state.c b/mm/swap_state.c > > index ac4fa404eaa7..45dd8b7c195d 100644 > > --- a/mm/swap_state.c > > +++ b/mm/swap_state.c > > @@ -458,6 +458,8 @@ struct page *__read_swap_cache_async(swp_entry_t en= try, gfp_t gfp_mask, > > You move the mem_cgroup_swapin_charge_folio() inside the for loop: > > > for (;;) { > int err; > /* > * First check the swap cache. Since this is normally > * called after swap_cache_get_folio() failed, re-calling > * that would confuse statistics. > */ > folio =3D filemap_get_folio(swap_address_space(entry), > swp_offset(entry)); > > > > mpol, ilx, numa_node_id= ()); > > if (!folio) > > goto fail_put_swap; > > + if (mem_cgroup_swapin_charge_folio(folio, NULL, gfp_mas= k, entry)) > > + goto fail_put_folio; > > Wouldn't it cause repeat charging of the folio when it is racing > against others in the for loop? The race loser will call folio_put and discharge it? > > > > > /* > > * Swap entry may have been freed since our caller obse= rved it. > > @@ -483,13 +485,9 @@ struct page *__read_swap_cache_async(swp_entry_t e= ntry, gfp_t gfp_mask, > > /* > > * The swap entry is ours to swap in. Prepare the new page. > > */ > > - > > __folio_set_locked(folio); > > __folio_set_swapbacked(folio); > > > > - if (mem_cgroup_swapin_charge_folio(folio, NULL, gfp_mask, entry= )) > > - goto fail_unlock; > > - > > The original code makes the charge outside of the for loop. Only the > winner can charge once. Right, this patch may make the charge/dis-charge path more complex for race swapin, I'll re-check this part. > > Chris