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 D3046C52D7C for ; Mon, 12 Aug 2024 19:07:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6FFCC6B00B0; Mon, 12 Aug 2024 15:07:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 688A46B00B1; Mon, 12 Aug 2024 15:07:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4B4DF6B00C7; Mon, 12 Aug 2024 15:07:01 -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 230F56B00B0 for ; Mon, 12 Aug 2024 15:07:01 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 904451A029F for ; Mon, 12 Aug 2024 19:07:00 +0000 (UTC) X-FDA: 82444525800.08.5B26D88 Received: from mail-vs1-f49.google.com (mail-vs1-f49.google.com [209.85.217.49]) by imf30.hostedemail.com (Postfix) with ESMTP id C555280023 for ; Mon, 12 Aug 2024 19:06:58 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=xzxODYtv; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of yuzhao@google.com designates 209.85.217.49 as permitted sender) smtp.mailfrom=yuzhao@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1723489607; a=rsa-sha256; cv=none; b=u0H8KHYpZIQNlLSTDbpfTVNn7Za6E/gWs/fPiBc1eYCLVLnXiIq2kahVhLJ6G96Q4yw859 4w5bJhU3C0am2ADRBmL64M98Wr2c5VQSi+/R8anJ6hemdUr4vydZ4Dn4PO8nfP4wIVEUUV jVx2TEKKXTF6rhH9UitW6AGT318Vx/c= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=xzxODYtv; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of yuzhao@google.com designates 209.85.217.49 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=1723489607; 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=xB6GgYIvbyBy6I8JWqaCez1V6H7Bqdmk//8NtSPBKqA=; b=E1szenAiREM1kPS6Okk6zYpKINH3JJBVbTgqbGv16v+kmc16y/wa/9cmy3llNCUWdDD/DU Uj+iyOKlW+LAosLjqzepAjBTSopwp5W0NZmQ0NngJZHSGfll3F9tFP4SfZBNooWTjeJ4cO 7TGgibXRAkP/HkGPNMfe4jbxBBD4VYs= Received: by mail-vs1-f49.google.com with SMTP id ada2fe7eead31-4928e347ac5so1254636137.3 for ; Mon, 12 Aug 2024 12:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1723489618; x=1724094418; 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=xB6GgYIvbyBy6I8JWqaCez1V6H7Bqdmk//8NtSPBKqA=; b=xzxODYtvGzI5XtVh6KKQOWeAuTYMBF4ctqR5KAwZLpg5r3rZu/4roY/+/rey9jCoOY ev51ipWfKlBr5X3oHtX2FwAXX0+xCOGmPrsIVRtteaGTKnP1uJpdsL2LYkop7NURT0IY aUTdxAJWBNWBhxBXAE2JV50/DvHKFyoAAk3DRVh6/29cJxYZtWmOmqxy9cZNx25aGdg7 v0SwD55lfwLJt1RIn/2XCNqc5WZaIMAT+xW3qswpIcI1wJ7JnYPrAgn/OIbbDvoE50HP kjZS8qJSj/Nbdy5eGO9g7aM07U2QdjWiHNqJcGIxluOBVOWNWUohJAU5P9zIwJaKjMeF 2GYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723489618; x=1724094418; 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=xB6GgYIvbyBy6I8JWqaCez1V6H7Bqdmk//8NtSPBKqA=; b=g9S7xVPsWiRVtmkbiLpPeQ9/OwTHLC8ravzupjebeHc8OECab0f1eHm77PUotwu/ss T2v6n0cb6MR1wUtAvOYEyL/71MK+59d+6/NVozKy4hcav+y2D8LmAZ0iKHSrNMjx+FGH Bd3WhY+tmHEqJIQgMFlUVrkjynDNoWnAWnoCmcyye6TnxHFof+9g+rrCiknr2oh2Pt5v JrLkwOAApsatB5G+ud2ERJo0zg9rrmmuDP0qKIpW/2cexJRy23l9HSQj6354XaU3LSiD it8yA1YWlalS9Lew+wA9i7tfnP2KcBkE5LZMhkaYd381FmdhR1Q9+aoH8UpjTHVJgKpJ nUQA== X-Forwarded-Encrypted: i=1; AJvYcCUXIWoFpWHe6PUT9i+L81Jw/k3qsZonY1orpmBbsg0DBi2WB0enNnCjxN+elF3yDlmEgO/fqJRHmuajvmECnkhU1f8= X-Gm-Message-State: AOJu0Yy0krs55TetIvJfZYvCWMUrMNW40zro8NrZlvF6LtfIvLkzf20h a14ZVZhmjG3jiB2oO1WbvXKPdK2X6S3mOmKV3dqQF8KQaNGdmiuqDbiVgysVhJ+ldx6hkIaZluH xyXB9vnitbKC4KDiwq3b4c0npH1d3Ana++25Z X-Google-Smtp-Source: AGHT+IGBu3SSdfMtnwvh5jc4QS+hZY4FzeoQfYO9cSrQ8tLL9oSnrAbTSuf/hm/n5/hVymVbKWDhCL8v1oazbCATSYk= X-Received: by 2002:a05:6102:b13:b0:492:aa19:dcf9 with SMTP id ada2fe7eead31-49743942f38mr1644540137.6.1723489617727; Mon, 12 Aug 2024 12:06:57 -0700 (PDT) MIME-Version: 1.0 References: <1723461718-5503-1-git-send-email-yangge1116@126.com> In-Reply-To: <1723461718-5503-1-git-send-email-yangge1116@126.com> From: Yu Zhao Date: Mon, 12 Aug 2024 13:06:19 -0600 Message-ID: Subject: Re: [PATCH V2] mm/swap: take folio refcount after testing the LRU flag To: yangge1116@126.com Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, 21cnbao@gmail.com, david@redhat.com, baolin.wang@linux.alibaba.com, liuzixing@hygon.cn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: C555280023 X-Rspamd-Server: rspam01 X-Stat-Signature: ioz8y6cibgwo5fxtxq8brizk7onfzg4q X-HE-Tag: 1723489618-269371 X-HE-Meta: U2FsdGVkX196ki79W0BLbYtXNbvuCo+mlT3wbomw7Fs2xdqzo8U6zhLvUtZ3DxBNMV9U64JQ2YR/VRL18OgbCYCgubUX362X/aEqODodbnz54SToTB+wDrrhEgUSOdlGPfUWcoEMPzmivGAHMMRjQGFrt/PdVAYy1eJ+KldI83+0OgFeHugSXT5PUUUYOySu0wcWh94PVlm8Z7REwi1BkrpjRILQqHNzjfM6530exoBODq8/7hDXYCMBYkYJHA2HZzmbrBJiIipTEy40btM9N7GUbMYeKrAg4xpneS95WJA+YFDg5ryUl/NsdOuY9upILINYTBFbJJ0SY4Inc4w9BIN4RPpZpOoDfwOsrrDLaSuPVnSt3hsFIVe1+1JsouNlWgHjyasdMeL4dGYqYbt3v/E3BbZ5fOS61GzYPy62sKM5QXjxuhfihdzFXq6Ofb9cmIfo7iLInR8rFwAyLz+Ve0c3/Cg7Vj+OGrwlmDKHTqVRDTbFkQXyrGknn0qkll4jZVcyxI7MBc83RMXd+8RHv98IcWLSMHKGemOwXKYLFvfe3IKwTg4fcZXGZHJDhPRWgokgODqsZViC+GIM0FTQ2ZTOo5O4mxvqcHX8ATI5U9fZ8hPf6gNq9jtSyoa0hGWbwX0pI5goDHZ1WfiMRDbp5ilcQV0RANyPZjtdwqytxuxCIcRJOFTtIU8jXHkwbwXYJel2IJiFQGrk75+BdOQ55BmqoVV2+N6qfGi4d1jyXqmCktGRER+a6XJz1Ngbelxe7k7iiCBdapJNM4Ty2/f5/dfk6ey/hThJSoposjY4DmJCyqZil5dQhmIQJ9C+IRarwEPn7IHMQ+f/UyFUGQO7YyCn9LxCAec0wmLT85KL1iYZxFo2E3zv3BTJLLroYKWP8xkkchLRPs68bkJOS8IMmuzIasS4mwjAuHEW/M1MuH/Ww91OtKcgkRemJ8CKcY/ygTWLjKfejFcqLljOfx3 my3v7Gbm t1e1KwXTANLipOOMaDhi3aYUaPgDnRmntBj531Ua/7wxWapKmVAN/HVJDq3fUoIcWVbSz3U/GpfDcXkGY26KZQ190cBwlqBSGZLHewKSdlKZl8Fvfgx1kHYyVuq7GYedmOATSUys4JyNf+8BwnHsdtC2NOaC9nUJGR5B1uLTm4AvGUYMUxqzsKKZ6RfqKM7naD1wmQNtsKm6JBfOeaJZZR8s/ZMxDsI8OtTbItPPROBjETWpKZg4T9M8QPicu3Caf0m6fwfyqCxss9ZBJJTMGMtbrkh1IgdUN30ponRDDrjVA703LmmkZ9boX0DlbQCoZCSfBSnAdhHy1hkqN4+Q41rpgZCiw7tl9142q 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 Mon, Aug 12, 2024 at 5:22=E2=80=AFAM wrote: > > From: yangge > > Whoever passes a folio to __folio_batch_add_and_move() must hold > a reference, otherwise something else would already be messed up. > If the folio is referenced, it will not be freed elsewhere, so we > can safely clear the folio's lru flag. As discussed with David > in [1], we should take the reference after testing the LRU flag, > not before. > > Link: https://lore.kernel.org/lkml/d41865b4-d6fa-49ba-890a-921eefad27dd@r= edhat.com/ [1] > Signed-off-by: yangge > Acked-by: David Hildenbrand > --- > mm/swap.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > V2: > Add sanity check suggested by David > > diff --git a/mm/swap.c b/mm/swap.c > index 67a2467..c048659 100644 > --- a/mm/swap.c > +++ b/mm/swap.c > @@ -226,12 +226,11 @@ static void __folio_batch_add_and_move(struct folio= _batch __percpu *fbatch, > { > unsigned long flags; > > - folio_get(folio); > - > - if (on_lru && !folio_test_clear_lru(folio)) { > - folio_put(folio); > + if (on_lru && !folio_test_clear_lru(folio)) > return; > - } > + > + VM_WARN_ON_ONCE(!folio_ref_count(folio)); > + folio_get(folio); No need to check folio_ref_count() here, because folio_get() already does it with a better check folio_ref_zero_or_close_to_overflow().