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 A56C1D3F281 for ; Fri, 18 Oct 2024 20:01:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2599A6B00B1; Fri, 18 Oct 2024 16:01:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 20A166B00B4; Fri, 18 Oct 2024 16:01:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0F89B6B00B6; Fri, 18 Oct 2024 16:01:41 -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 E7AB06B00B1 for ; Fri, 18 Oct 2024 16:01:40 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 671E31A1AE4 for ; Fri, 18 Oct 2024 20:01:18 +0000 (UTC) X-FDA: 82687792824.21.3B8007A Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by imf27.hostedemail.com (Postfix) with ESMTP id 5807F40006 for ; Fri, 18 Oct 2024 20:01:27 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AYes6zVc; spf=pass (imf27.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.178 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=1729281624; 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=moCWFw6SD4CNOWNlmwaed+/ZD9C8MhoXUiWB6DB9jCE=; b=WKLG+2mAI/1OQIj+gn7O2RhCVzAenebULPElNGei4YW2JmP1gEJDTKCFJ1DR20yDo2Wj0D C6KQDaRQAuKafKb3M5rqvTNW2GVGyfS/kDiUbrg5CXxxYE0PUm02N3J6UlTci0TO5u195Q TTylrAu2f2YaQLF3tWb0rQG2epbqk5g= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=AYes6zVc; spf=pass (imf27.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.178 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729281624; a=rsa-sha256; cv=none; b=svysFfucyik2wFK9o40wH1UmRKWaJ7RYceaJCizC4VvRqDojCEw5aB6fwW0Z6E+rFlX4A7 Nz7RvoCrcvUiiGqx+/j4fjEjr8Q6d9SAuj3eIUWjoMIu/VUPQ0U5WLkXfWyPTbi/k7UKB/ RnWErvGrhfOa7j2uea3X1D3x5cRPUAA= Received: by mail-lj1-f178.google.com with SMTP id 38308e7fff4ca-2fb6110c8faso27701191fa.1 for ; Fri, 18 Oct 2024 13:01:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729281697; x=1729886497; 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=moCWFw6SD4CNOWNlmwaed+/ZD9C8MhoXUiWB6DB9jCE=; b=AYes6zVcwHtA2HpnG+RLyS3KcZhSydvyQ2k53jPkbjfCuQIX+Nzq2K2yfkz3hgrHOF mx72EkIzRabMc3JfCb1KRVVRkVGjUgUohLVWTHKm+VmjUzoHMngfce/1XOYzDUOkbqHw tFZj/LHIhD2a5ftxE1KIOteKfoFmkIoCeatqYnOCVDYcEUD4g0HcRbZxEZFsemHqorrZ 2mSaigKtoVsoBya3zWwSKrQNcFmoMdr4YxLhNJ/IpcZXlEv6YYdjU59lt/D6MRCY/laV Mf68sIYyVgM+OI9fFV07hUx4KsHYiHJFejMK4yZrVxaTskhrmgDG5WErWkcvReTeD3UT EuLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729281697; x=1729886497; 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=moCWFw6SD4CNOWNlmwaed+/ZD9C8MhoXUiWB6DB9jCE=; b=Von9lHyDPUmwg6/0bHxiTkqheI2YPwY01gOF91KedHxT0KBn9SLWvC+fvB5nwspg6S GWERfO9gAGMBgskPa0wQIUR2FV+qRrT0hbw2LJIGU+B3s19KZJF3MEQxOD0FPVS2QgpW 3IqWFblbHyo1n670IxEYsbiRCSDElWvMJYpMPbwgjGNDrqTQbiWSD+Fnzu30TLKurUnG FyWnkOrx+9mHtTQ6VXxE3g2bU9EcyRtdLADyry9x2oqf0qCl7c04lYaicW9ults/Umkg YHPJip5Akf514jkqN5b1W9rbemoKAbkhDHhMm9T2QIUBUcuJrWFYSyj5K9fkwiwPNapI H1gA== X-Gm-Message-State: AOJu0Yyfw6n6E4V5hDMsAApRbepBLtfiXY2Mly7ZPNNMo8toj1aZT4/3 ka11mw6hcPB38aEwQbIrMLX2iEIY3gqyGYidRE43ju5c7aMV6hSlYkynyBw/fOJ1/f2Z7cnUkAq 5+J4TAcaCqdefqOovsIFF5B0TT5c= X-Google-Smtp-Source: AGHT+IHLXLOgC6jg78xVbKIpouOB/nxUtWgrWkrm/R7V41QdCoMpzzpqBu0xvZYl9Td7VAjzkAdn31CByDsvBvJ8mV0= X-Received: by 2002:a2e:851:0:b0:2fb:3a78:190a with SMTP id 38308e7fff4ca-2fb83262a78mr14324981fa.29.1729281696452; Fri, 18 Oct 2024 13:01:36 -0700 (PDT) MIME-Version: 1.0 References: <20241018192525.95862-1-ryncsn@gmail.com> In-Reply-To: From: Kairui Song Date: Sat, 19 Oct 2024 04:01:18 +0800 Message-ID: Subject: Re: [PATCH] mm, zswap: don't touch the XArray lock if there is no entry to free To: Matthew Wilcox Cc: linux-mm@kvack.org, Andrew Morton , Johannes Weiner , Yosry Ahmed , Nhat Pham , Chengming Zhou , Chris Li , Barry Song , "Huang, Ying" , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspam-User: X-Rspamd-Queue-Id: 5807F40006 X-Stat-Signature: kwuij75x4hjsh53hwjptecrsajtcd3c6 X-HE-Tag: 1729281687-66199 X-HE-Meta: U2FsdGVkX1/HJMjNALqTHZsu20y7dGSE21CmD+5mCKgByD+EF0khdbT+8+KJVWrcrqpuAHS1UirEGbQVW0vBy32EKi9cyNs0IlSBLc9OmVvJ/9OqOkbrmOjfaBQbOnN0+07hJdRH5MCotgFpYbObKjPIJQOQaRpreKkWxFTEjXaPbCyLe2jwqeKj+0rc3wrUVmpvaG53kq6BPc6hDkDLG49HCG6zcC2fTKKwYx+KvDvodxdkga3TOeh63R0fti5OPcI4o18KT2X8YiUPElul0RiG3QyeUVl+eQ17MAcww2/yo1kuQJlT8SOr5+HK/4bbe1nUyndzwGsGiFJPZEHZws8Dp2xQ6KGCanvwcLTyfmW84IVNKDGQHC2Ehl31pNaQQAleL95kIx1TyCJ7qdDEA1R26Xv1/mPLZPwOr7gEnY/1bWiZY2HqjehLRsn4Y8vSVbS+oFfgjJ5ENPZxKvAeNNWANOh1UED0Ye08chplktuLMF2NWHTmgXKUsXL15pOcsrZckxyzIpWyXmFjjkoMCu0cmaaIMPnRIa2XZyp48TSc0YwvwcfQzDTS36WqzNnX6O9ajNaeaw3Zdg3eYBWsZwykSXACF/W1FQ9qKCn37osk0W+5/GgV2/UsG7D4K1AyZkozVWkt/RbuhmpTtdaHmXnsfW+apldPNYFaEopLVfPbbEHy24V7PUEt9ZADRWF6a7+s6xAjp/LOLx2YLkQNPyMUOrDHtnGVflsO1lUhpp3fdZZEKgN5pI+diJUuvSEPu08KsYbhxHCcOjUlIasjSNh+5kmaoCBDVjEITbuHdskiCHk0Wv9G/8h4M8VosaTNXHDcysmV1K5eAfluW3A3SuZ8Hui2GONBBg+/Z4eAz6YPRkQD/Exz5BZiUaA9F2Q/QgEFtufUnsHJ4u7LiI+2WjiEhyO7w9e8jTw7vGk45k5z+lkS+IMi/7mCFrqZvHuQL0ecM9F/vMM77K1vVXi +gwhgUFU KsVS47wkB4d6sukrC6C8I6848aI/3FNB/NkrWlHbuz7C90JEccW2/VKISX7orpToSWWnqhBCo2h4cVahIHLpV7yyq7b8By4RS/1az1BedLeWab6VeYnRKNm6YAUVnpdzmOJPbNZiX01e7NpysWKd9tXCcmnI1BYA787Rjy2t75qLWN39ZiCMZcdzJb5thVs/02YrnQALhmrmpJ+4/0VO1wfnMD6LrgZ2ZxDJExAPzMA8p04CSHSLT+uy8Ti1V7UOP4Hepl91jrQzYz+pjk6ofWusHiCUXRYBGd6UK5gI16b15NK69pHQfhOfhHJvOavBJcr6iSGYRc1p9/tVJbglCQ03vGKrhGP1DHvftRAxXPYWkIJsbZW2mjm+Eb5NppmoPLzQoO67HHOaJQV+xH5n7UMOU8g== 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 Sat, Oct 19, 2024 at 3:46=E2=80=AFAM Matthew Wilcox wrote: > > On Sat, Oct 19, 2024 at 03:25:25AM +0800, Kairui Song wrote: > > if (xa_empty(tree)) > > return; > > > > - entry =3D xa_erase(tree, offset); > > - if (entry) > > + rcu_read_lock(); > > + entry =3D xas_load(&xas); > > + if (entry) { > > You should call xas_reset() here. And I'm not sure it's a great idea to > spin waiting for the xa lock while holding the RCU read lock? Probably > not awful but I could easily be wrong. Thanks for the review. I thought about it, that could cancel this optimizat= ion. Oh, and there is a thing I forgot to mention (maybe I should add some comments about it?). If xas_load found an entry, that entry must be pinned by HAS_CACHE or swap slot count right now, and one entry can only be freed once. So it should be safe here? This might be a little fragile though, maybe this optimization can better be done after some zswap invalidation path cleanup. > > > + xas_lock(&xas); > > + WARN_ON_ONCE(xas_reload(&xas) !=3D entry); > > + xas_store(&xas, NULL); > > + xas_unlock(&xas); > > zswap_entry_free(entry); > > + } > > + rcu_read_unlock(); > > } > > > > int zswap_swapon(int type, unsigned long nr_pages) > > -- > > 2.47.0 > > > > >