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 C864BD3E189 for ; Fri, 18 Oct 2024 19:46:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C01D6B00B7; Fri, 18 Oct 2024 15:46:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 471576B00B8; Fri, 18 Oct 2024 15:46:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 337F96B00B9; Fri, 18 Oct 2024 15:46:51 -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 154D86B00B7 for ; Fri, 18 Oct 2024 15:46:51 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id CC211819AD for ; Fri, 18 Oct 2024 19:46:39 +0000 (UTC) X-FDA: 82687755444.24.E809269 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf12.hostedemail.com (Postfix) with ESMTP id DAFE740003 for ; Fri, 18 Oct 2024 19:46:42 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="MSO/RmjZ"; dmarc=none; spf=none (imf12.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1729280647; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+VepyXiZbx9uJ8aegzhYRA4ICpuwx3cagiAD2SqI8CE=; b=Kahu63tx5KBGD+Gev4i5tED2t7IJnhaRstMik4mjIjOM5+Kti6CJQg4BzO01rCZYqG732G gF9hxegOETymI+1CvbFEQ0OwxgxuxR/1oMyg2aU4MNoLsaJsTORn8dYPZhKuzHlsVFTja1 1Levj5CIwK2E/9eN4osXdh5PQZKUQ2M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729280647; a=rsa-sha256; cv=none; b=3IdRQQkawiP1dZOzFUPaGI/NJdspwv3NDQFdvjP/+107B74tI28WXb0wrsKF5FDPqiRvsZ C3EtPkZ4nz+SQh6DLsZgzFR5sUeZHjbYA3q07PE0JUDgfSeyLNtaAqkWkWNnplOPDkcigm kguzpotl8/fFkJkc6wLLsBNb4g7Fa58= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="MSO/RmjZ"; dmarc=none; spf=none (imf12.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=+VepyXiZbx9uJ8aegzhYRA4ICpuwx3cagiAD2SqI8CE=; b=MSO/RmjZ+PMCZR1NX0HIi2Ojmf 2Ht9l87B9J3ICbjuh/j9YXg0Odsrih/GKYTGy/trXKYhRjZHtYhmsAw/7ii/n5JpWzmCml0ypXSuA piDB23ud9Ktr6deNfhGSWQ8ZypbvAfRIDZrNH5Dil5D68vHRwymZDf2Jd9jHIsbRzSXQXen0wu5SL 2g7FAACSQ4Kw/OTdtiHP+LYQc7Eg5Fs0P3WOOeh++BWyYizQobL6wA7qrrQxCSvzhZkjBtOmzNbNZ hBUAY2C8jPsK/pPqdF5Aq1LgNkQSYL/NIbHOr/jp2x9VftcoTXlv9WuBjGijEs3ZelxfvGPvtB9cP JlF1Nphw==; Received: from willy by casper.infradead.org with local (Exim 4.98 #2 (Red Hat Linux)) id 1t1svj-0000000DXBu-41oR; Fri, 18 Oct 2024 19:46:35 +0000 Date: Fri, 18 Oct 2024 20:46:35 +0100 From: Matthew Wilcox To: Kairui Song 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 Subject: Re: [PATCH] mm, zswap: don't touch the XArray lock if there is no entry to free Message-ID: References: <20241018192525.95862-1-ryncsn@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241018192525.95862-1-ryncsn@gmail.com> X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: DAFE740003 X-Stat-Signature: kts9dspfywe44adewdkcmyi3fmhjc4ce X-Rspam-User: X-HE-Tag: 1729280802-804122 X-HE-Meta: U2FsdGVkX18hancLMNM7JIPNh4sNNu0EvqGRIGXtpymyd+xcZakOJplfHI8I0kMDpNGOt30BImnP84s7clIHvmaq3NZbmFCjO3GBKek6cH6i6wXTUQPjRnzas0jbA3nwqVm5pu8TnEVYyhdvwxBoWyzMVyBE2HckLFTstQkTTgFoCqGt2NFNiBDbmcdncvgA9sLjC3E/16RMhSkMpAqi31yqFeFWlb38rhMPCW96a0nKD0fhYdcG1dM8EH6JasrJyjbGd47hILPNct/+mOn+vTrZgRmsyfrk5LZ05MToPBEasgB6aMauJTDI5ndmFbdIXlCCO1DCeA6fKayY/h1XVZaEZ5SO8Gz4HASV8BUC/F+gNuTKRk497o1+J+Zbb+o2ZFGW+VfMjaEW7PnAMO6tRhc0XP9fMezhO/Qlo8vowQN1MShkU3BZ++cADolFJu0HCQTtfSWP9YNFD7XzSmqWfodLkfu2bkgYBDEs/8c/4fTKwLKB2RathG/pgCiXZRGr966R+pnZ26Zemo4H9aiafBdq5lZCwbLx8EIAM6jdPy2y5iRBTY6GJSwa+SCfH5JnMvzOIZGLi2WS3DIXpADfLrr3dOb8OHvocmtPiPBApmJkQIQb1SatU51/12csua8McqVJk1FsAIgmyNxpjuFvaPgI3VvQ5l3jgIvMNkMJq8WS0XwCNeENdJkAtd0WkeVb6v90FM7X67qg2i66NCBt+vdp4C8m4lt7QvsO99TdOxOycOzeknUBVmpkOkKGbIh2KjjJT+qlTQt1shKjiM5s5k4rOcsn68rDznpj6xHy1iG+HPpD+W/epMYEBsqwDolK7YtRciHRWVhBKvrszId+QRG9P5nOTcn2a8NZazHd4Qc2i2DxIZvLD728PTe701wm9v2TrXzCoFjViU1I2DldXP6J04JRDUWK0elOl23TX5vE2UONIqP+xbx6DBo4LxKo8RheKRXNYSDMgKLALqi /iR2E75Q 4UdXSRBXre05T8rL3LlY+QJiDq7nJMwgujj1OxyuogX56UqL3anM8NeUWELwRYuypDgwDT/Psn8BKpBdEVSo/dki5EJh8sJnvo6IkdxfUjKEH+MVjXNqtcLh7yrEystErOvTrihho1NAPTk7DmPhLaa8AI2Tg0yd46sc0Z/ezrdRVtbekiPQ1TFlMJQz2ijOzHhG8HKUDJMXWerlHBH//4TlEiFqvuCLvNTwiKpFiRuFwv4R3nLo+vSl3+9FwSBJXhju8 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 03:25:25AM +0800, Kairui Song wrote: > if (xa_empty(tree)) > return; > > - entry = xa_erase(tree, offset); > - if (entry) > + rcu_read_lock(); > + entry = 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. > + xas_lock(&xas); > + WARN_ON_ONCE(xas_reload(&xas) != 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 > >