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 CD343C71157 for ; Wed, 18 Jun 2025 07:23:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6F5256B0092; Wed, 18 Jun 2025 03:23:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6CD506B0093; Wed, 18 Jun 2025 03:23:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 60A736B0095; Wed, 18 Jun 2025 03:23:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 51FFF6B0092 for ; Wed, 18 Jun 2025 03:23:06 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1ECE8809CE for ; Wed, 18 Jun 2025 07:23:06 +0000 (UTC) X-FDA: 83567679972.28.2E8288D Received: from mail-lj1-f181.google.com (mail-lj1-f181.google.com [209.85.208.181]) by imf24.hostedemail.com (Postfix) with ESMTP id 2632118000F for ; Wed, 18 Jun 2025 07:23:03 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nc2Ez500; spf=pass (imf24.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.181 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750231384; 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=1YXATzCsfCLxnqFp7tGFkz9QRS5mCSR0gWU9uHVqyLM=; b=fR39X/z4Q+QAejK7k3KBK8rQZDnehzcrDWn9wZkz54QUX7cta47FNlZP8+ylRl3TpwKrQZ DgTozJFClzWs+PCkC/XXSd9ISvHIkzIC8PdaQXODTAppLt3keCtWxVIWe/6mLmCj6+fZrR yYfLw+o20voBOpZACxKTkrIW93p0DbA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750231384; a=rsa-sha256; cv=none; b=A+vIjnzmuSbcD1cexvQUSwca2Zc8IVz7LsGHmwKxSRx1Q0xqhD6UtijK04OYdMb9kjbuof K0WW5JRmFYsU7ODtRuVoRtThK/5v8sZ30unlT/cTNlYxcLkqH9VuGQ++e5fgMRetvrIZGa z8JrPNXBazKReZ6oQQBS28ei4xJya+M= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nc2Ez500; spf=pass (imf24.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.181 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-lj1-f181.google.com with SMTP id 38308e7fff4ca-310447fe59aso69546881fa.0 for ; Wed, 18 Jun 2025 00:23:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750231382; x=1750836182; 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=1YXATzCsfCLxnqFp7tGFkz9QRS5mCSR0gWU9uHVqyLM=; b=nc2Ez500+Qv9i/zvQesvbv3GQfLS2K2Ilf0RBgw09RL7VjTPrwBmP1CnxcoFj8eYmK i8wk/JyXoFQu+g37XRfsbKlqt4BgXSjb0Ylpc/vdVvmxwREDPnSQfvsfa3lYHJT4POTF Wbgbn/CfXRUN4JPJ/nYNhaLmVXpTxcKL5EwNURNra5HsefR5TT09iz1q7Aw8PINrNoJ+ dBrLHzdq1HJ6yJ0HpVZPsfxqd+beVLWpgnHFLIm/5ZL27M/PyA1s6J+RZ3eE/vUGu0HW MYIocEd9chnezp0/uiwilM+ohMyp26qQ5n86AV72FeyTbRrja30Zwuw1ps2XNAHPfNwD HifQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750231382; x=1750836182; 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=1YXATzCsfCLxnqFp7tGFkz9QRS5mCSR0gWU9uHVqyLM=; b=DxvutUHK3wrKcxg31SiynXri+eFocDY/pGnbZDjiNG1jHGWB2xHY0mrovXGFyzlzvK EKCvsAx40vzUzGTV6tJAXxqlqJtslckYQEHhp9T+5CYKOYsa7lZ7GmiC6RH+H8BQiAf2 NIkvXtJhED3pH+DORjowaDx1/u1Qh5sTXCEIgaRYdXISlaZ2kifHCbkMI9Nvk+7P0FJr xzhGHxsL/2Lrl7aobSljEUe2loijyop7xYwbyzbjuzUxWYObZk+scavJRvHbd9IoslPI zrGBdG7RqfKwfYBXs+65Z4WjyKObwmTvZcJzzVBm7mtGSwMBB7taUl4pU1GvHldp0OQD xHpA== X-Gm-Message-State: AOJu0YxBKt8fToaQAuafRCFzdOlm3V4tFKpL3UNkwt84YWprmVu9gztu iDxn1aJrxcgIRCHcmk7oq/UL339s7VP6hdQFsXlpnHeWK/gCGA82cXzMfbpU+Tw3LKYB63viFma xuV/WS3DAEGULFcr/tlN4xOVyJinNJyA= X-Gm-Gg: ASbGncvRfs5XW/XbDxyvpMTzX72q82Gko2WtV6D3t9Mx628zaULoEnLJB5INucDNpsu mhjpGNu/HBQizcHdEY4Hm6YY65c0wefGzLfvhY6CkttjRa/9U+dGCi/hzF0/PShXmG90lsqelCb 5Lag+LG5lLgbARaSxSLOw6jGG1ye1UgFgRSke1p3cizxI= X-Google-Smtp-Source: AGHT+IHSN2R9fQh0yj5PkzqCGz5w5B5CbKOWeSaCELf/IqOZOfEcdyQYIfEPjt48z0kNcsNXT4Q+oaa8+PA9aDwU42o= X-Received: by 2002:a05:651c:546:b0:32a:7a12:9286 with SMTP id 38308e7fff4ca-32b4a5d9b09mr44605481fa.31.1750231382220; Wed, 18 Jun 2025 00:23:02 -0700 (PDT) MIME-Version: 1.0 References: <20250617183503.10527-1-ryncsn@gmail.com> <20250617183503.10527-3-ryncsn@gmail.com> In-Reply-To: From: Kairui Song Date: Wed, 18 Jun 2025 15:22:44 +0800 X-Gm-Features: AX0GCFvLPhbbBuiIVjeNxyLFjBm4UxtNl9e06S--OExxrdUKkphBuDWeGdwqU8k Message-ID: Subject: Re: [PATCH 2/4] mm/shmem, swap: avoid redundant Xarray lookup during swapin To: Dev Jain Cc: linux-mm@kvack.org, Andrew Morton , Hugh Dickins , Baolin Wang , Matthew Wilcox , Kemeng Shi , Chris Li , Nhat Pham , Baoquan He , Barry Song , linux-kernel@vger.kernel.org, Ryan Roberts Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Stat-Signature: rmxu4k4x6m7jakggkts3toskny8wgxt8 X-Rspam-User: X-Rspamd-Queue-Id: 2632118000F X-HE-Tag: 1750231383-406974 X-HE-Meta: U2FsdGVkX19uw+a7X0ZSzmJViPT7CyopRU4uPu0zjtKxh8gUDrZs4PIM79V7RiJCrLpKbeo3U/k78QdfyVoujGpAaCNeaKfdHs8ADyV1c5QrkhV41NlHSNz9rbN4UqPtsMHLASyOtfUB4UBGorfA2sN53yVac6olfD25IJdOBFWAhJeSLSrI+X4cQSOGj+6qXNUwvl00pWP/QyAxrILWXrGiTjcDFRx0XG1tiQPNUdM5tBQYvfLAoaDtv7hmNaj2KXyvEHjsclLzE8TSoLJn8yNOCXyQ+UDA1YsH1NSmwPNQk1s51LeVlxUGrap/NxQARO7tuy7xd5OazkX5ATny4Mn6qZGNu0SirZmI7Ryt9qoOEN11/k1F//ZonGe1zFFPrUsrj5p/KyH3nImYkaFC91L1D/Ft6cT14cY/WxFQNKsRNt5Y373S4gJpjBF/4dMtwzQFgB+pGCe4udC4QASCQedWcllIwMidaDGhFQq/Z0v9big/FbEV6XrF2PMDW9xE0LYmKzkYE9go4oVKZBbksDnXqBtGG87pgCjKur7XTCM2zHZlhOnEY16WQIW4tGxdwyQY593k5V3RH3Qx86nZgpdygsS0+8J/6plHkdbZiL+xthmT1SBjeuGKxAd8xxmGkRbNHs5OKttS589FUb0iE7SLYJjm07kOYxeX3FNj5Hf+aySXlmjwrkZ+afUPgPkkA0okDoFPEIjdm5G57NAYV/eJgTj1uk9SOjHoI6VZdst9c1fD5UGM0ju2FzwcocE9jI2Wm75DFG1EXxuMzkiVYgH5JT2DVGpmJ5TMyLClo294Of6MUBhRO3D1HjryBM7jEtwrBvE1CAgKiv+snPLGhHPYCNXtQEGzEPFwavsB+LUumd72wJhGJ2UG33xJAmzYBjYiDz14Kzl/uc+lIAM6dfRo9scrNmfZzEsQhiFM1ZVsDVRgF2OqydCL8grOh4gkAAzx8dBMkZcu1wMoYys GiJOZ50C tOwMzsM2EJa+/RVXSAbgBPe+lnCtO/tGNZf7U88Epkg9gSatX8HUFtm0I3pgxvDGBGAjg1g0wXJIHAnQkot0ygUsKNIIe9s2qiwIpNUVrCeORSJdmveEwCKD5G6OWCDtOaECAhPSKZhoSP+AklsKNGHXy5S0H99NlYTxaTgsqvMckVEbCG4CYz04ye3JOe2QZPXn7AtbAOPwJg/zZtBW1BgkdL2SJnGRmWwI15awSJ4mRxDiviJm8A17ItFBgoVkI41vGqt9zWt66meuuSIZBtpl6LJQwPqzjJxfDXt4WbBA7gLQ/Ps3Iv2TLvI4JiA97ETM4YgsHbkP+D/IP1x49ZxFu98n2SFUJ2kS9uP7vd+zRklYzaDCQ8terVlsibj7QP5Z2fQTVK7pRHt7z4IfsSdgprg== 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 Wed, Jun 18, 2025 at 3:17=E2=80=AFPM Dev Jain wrote: > > > On 18/06/25 12:05 am, Kairui Song wrote: > > From: Kairui Song > > > > Currently shmem calls xa_get_order to get the swap radix entry order, > > requiring a full tree walk. This can be easily combined with the swap > > entry value checking (shmem_confirm_swap) to avoid the duplicated > > lookup, which should improve the performance. > > Nice spot! > > > > > Signed-off-by: Kairui Song > > --- > > mm/shmem.c | 33 ++++++++++++++++++++++++--------- > > 1 file changed, 24 insertions(+), 9 deletions(-) > > > > diff --git a/mm/shmem.c b/mm/shmem.c > > index 4e7ef343a29b..0ad49e57f736 100644 > > --- a/mm/shmem.c > > +++ b/mm/shmem.c > > @@ -505,15 +505,27 @@ static int shmem_replace_entry(struct address_spa= ce *mapping, > > > > /* > > * Sometimes, before we decide whether to proceed or to fail, we must= check > > - * that an entry was not already brought back from swap by a racing th= read. > > + * that an entry was not already brought back or split by a racing thr= ead. > > * > > * Checking folio is not enough: by the time a swapcache folio is loc= ked, it > > * might be reused, and again be swapcache, using the same swap as be= fore. > > + * Returns the swap entry's order if it still presents, else returns -= 1. > > */ > > -static bool shmem_confirm_swap(struct address_space *mapping, > > - pgoff_t index, swp_entry_t swap) > > +static int shmem_swap_check_entry(struct address_space *mapping, pgoff= _t index, > > + swp_entry_t swap) > > I think the function name shmem_confirm_swap is already good enough? Anyh= ow the > changed name should at least be shmem_check_entry_is_swap. > Good, I can keep the function name unchanged or follow your suggestion, I thought a `confirm` function returning non-binary return value may look strange. I'm terrible at naming things :P