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 9DAA5C4725D for ; Fri, 19 Jan 2024 21:41:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C39FF6B007B; Fri, 19 Jan 2024 16:41:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BE9236B007D; Fri, 19 Jan 2024 16:41:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AB1646B007E; Fri, 19 Jan 2024 16:41:57 -0500 (EST) 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 9C1D76B007B for ; Fri, 19 Jan 2024 16:41:57 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 59D0680296 for ; Fri, 19 Jan 2024 21:41:57 +0000 (UTC) X-FDA: 81697383474.10.FC10FCC Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf29.hostedemail.com (Postfix) with ESMTP id 8B382120026 for ; Fri, 19 Jan 2024 21:41:55 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=cSk6S0x3; spf=pass (imf29.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1705700515; 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=UcFWmlndrDxwQIucMkObmlK4y/TY+5k7KMu1h6SIT0E=; b=TNFV1YUx5MeU+Z5HSqZkY4ir4kHTbe6xtMcebASusXN1ZWJoEt69kFGZoohrn7b6Vr7xYZ r4zzna3YGb5i1wRtOM6pLDC71HjpeJu291VJa+af156pvfvVadKsWERNnM5NhLL2sQc43C hd0ATjp1opVjFz1KmZLtxBUDw0S/Ejs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1705700515; a=rsa-sha256; cv=none; b=IHSdhwafe8L77mmD0WpcjKS6+Uqt7vT2WzVXnI8LV8KfttRIDyp3u4sa7TtROwVU6pMYg2 Ykr5M+6oS/ktSSDVxNVlQeA7imXyxnW9F4UZh5GSRHUtrJvRVEooXDgQT7WagvNP3OqPzf 992LKC1ceYA/vlSOZ4bPObEcoSd22vw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=cSk6S0x3; spf=pass (imf29.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-a2e0be86878so431138566b.1 for ; Fri, 19 Jan 2024 13:41:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1705700514; x=1706305314; 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=UcFWmlndrDxwQIucMkObmlK4y/TY+5k7KMu1h6SIT0E=; b=cSk6S0x3usf1ivMaTK6K7DjocZIIZUUlat+SNC7LRTr0T5ApbMD5PlMrkm47IRvtYq 55f675Ce0akcjx0eJoa+MJ2H7qRK6W+dOtJ7zM8JgqE8/O8el/UOhxtUstbCoC4H4SP0 ju5e4p/BAKreoTMnY6VC7uIJKvmRHIEPQCPVLBWzpZejXyo46cPUYrCrBrj7s/XbmZ2+ aq/K6LHDzWryMlMC2IgVllaThnrre4eC1EOq+25AlZILWwo9XUEVclIsHuBgvki4AS2c 81bc7VmcvbB5ItRGE1CyWqmWoS/lfcYdsDNoYaMrNn0lI92M6cxSi3eOodN599WuemgA EURQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705700514; x=1706305314; 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=UcFWmlndrDxwQIucMkObmlK4y/TY+5k7KMu1h6SIT0E=; b=gf2XtN60TveVy+3ZSQekDesm/3L9X4+Egxhunppt4y8K8Y2T9DHRp7Hwyd37p8UeWR hXGuRa4ldh5FXxi8118mrYgeVRDGBSJgkrmyPfKy4KM6E9FOWgqYFGnMOxUIEq8KBH9m QdO/blZtuHmZCjEA93+FpZvTwJh9KqBqxvtFTcJObRUxWFNGLt6uWh03ryyhryiit9aq 0vC7ypkuIsRnVZ8iaYDnh1VAniWtxcb9iXBElKuyxvQENTAysLLtW3pAVQzEVJne/f2A 8GfzQOuOSIEnGFkkBNbxZNK1GEe+s0kd5EQZg1Oyo7gNk5h+Cb+JnCsxoXO7dqCcf17e ssRA== X-Gm-Message-State: AOJu0Yw3fYzA1ykYDa4KDKnLazdTCb0tyXDSjDGX03Wj8WxP12RnFdt8 l+55KNkOq79xq5Tgru/gZE9tHDNwsdvy7C2chd61tjyojWCmEahc6oh3v7n/KQi8mxgoKN9D8gr 0mKfrnrEW3tJ3K8JoGG6eg9eZZEa0o/yyW4b/ X-Google-Smtp-Source: AGHT+IEc+s1Tk1L/GNE2hQfOrba25VkpKklcVWURxF3gHpnWEpwyBWcoyjYwqZ6MB6C5WLi0zW8EfjEtdzKoGrNyIAM= X-Received: by 2002:a17:907:c003:b0:a2b:2de2:8dd4 with SMTP id ss3-20020a170907c00300b00a2b2de28dd4mr565869ejc.15.1705700513697; Fri, 19 Jan 2024 13:41:53 -0800 (PST) MIME-Version: 1.0 References: <20240117-zswap-xarray-v1-0-6daa86c08fae@kernel.org> <20240117-zswap-xarray-v1-1-6daa86c08fae@kernel.org> In-Reply-To: From: Yosry Ahmed Date: Fri, 19 Jan 2024 13:41:16 -0800 Message-ID: Subject: Re: [PATCH 1/2] mm: zswap.c: add xarray tree to zswap To: Matthew Wilcox Cc: Chris Li , Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, =?UTF-8?B?V2VpIFh177+8?= , Yu Zhao , Greg Thelen , Chun-Tse Shao , =?UTF-8?Q?Suren_Baghdasaryan=EF=BF=BC?= , Brain Geffon , Minchan Kim , Michal Hocko , Mel Gorman , Huang Ying , Nhat Pham , Johannes Weiner , Kairui Song , Zhongkun He , Kemeng Shi , Barry Song , "Liam R. Howlett" , Joel Fernandes , Chengming Zhou Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: e7hi7d8s3s7iebaht8hhxtm86tsdz7y9 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 8B382120026 X-Rspam-User: X-HE-Tag: 1705700515-379648 X-HE-Meta: U2FsdGVkX1/S67+jFKiutVuwj3t/B7IbGtZNfoRgYjr35ZUdv9mLLG96ZsPruYp6YkPXOD7ZJRs8CU3pORbwv84yl/3/5zRfktTpqgjJhhXbCmc+1cHzCY6TUXxE7Zkn50xsOjuSSQOP+7vMKFG/PsRlBpikIdpUPx219AkPmQiLjSbZjO2NiWHdCkx+AiC+uiUn1AG7XSarjnDO6QpJxkOYJIWve6vMhKxX04hD9DHjq9lXBcvRSPxr/XyiJF95sm1k+F06najHPnJvqEaVTdiBapH6Mbh0WNurNh0L1Okwv0HVLd38+/U8no830ZZGYh4QG1rnsQlblT2CmKOr8Y7BNEMsXbZuWhk8bn23101TKTSPIHqoGW05Eaif/wDg4H6e7FzTL7FGKJ8gJWNaIpTP/zqxJgHc2yGu7r+NY1IpfpjBCo0GW9rJ1HWj0VAV24lfsl3sdn/A++rURq9xRGHo/AkksDv2KJPt+NMvB13dwsij5Ns4t46bKeVRzF2gEGwZmU7W71BPzOLOglzI4D8PO6a6Mw1cla1A1qf7QYysG6gsnuE6ZnT7cLfEmoVWqDdmRPtfeQrTMkvqCoEMCr6Gj/XwESjEfPAy9heRhzwA4l7gajGzQYB5ahbMD2F474RjILZQbz6cwUeAbrocLJfnp98PSynOfAetj3Sj3hSVoIfhcozDQlCC1PFUDC/Syh9wIrnpHasqMpQWpCFg5kZ2cD9+2XE4S7JJVsVqYeWp4IxZMKjmsKyQkpA5qFDGacuvVbqeztkIMW6fKvDNaCTwfHHiBNHlR69AZrcR0qLySsyit5XbXLMKBbkL2ONlZadFitDgsJbBorWl7MScTYg81H5r5cbYLIK4uiB3Z81e+vQPpBA7ROuHvGSCazcQc7P1E1369T0YY/OaV9/izYSHKrN2g0VRhZUB1E40MxwstZ/QNZZl/bygJtBqkYxkOcAS1feOGg/a9gJ9eCq ZndK+CKp D5Dby/W0C92WLRW3di7IGLLM6ZK2q+PSL0eAcK+F8kjf0e8FEzTWSmnqp8b7mhWXI7uwv01Qx/h1O40f8eP7ta66hT5rdkIeZ7VkjUAHCnjttuwaYGXyefD+Vr4q3v3NtH3pN8leqK8qV2bpiyfx2x8lap8eD4Ry6EhAXO0UdwsIXjrblPhDBqLH7dPRTIWGgSja5Uacp8wR8uolz8nOC9CGgvwq1d6ZZOeIv2/N/rKEOa8WWULEf1bKNExYK1d3iyMQ+juz9m4wENpbCrR62ea1J2+Qewi+1s5vQ 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 Fri, Jan 19, 2024 at 12:04=E2=80=AFPM Matthew Wilcox wrote: > > On Fri, Jan 19, 2024 at 11:29:42AM -0800, Yosry Ahmed wrote: > > I see, but it's not clear to me if the xarray is being properly > > cleaned up in this case. > > > > Do we have to call xa_destroy() anyway to make sure everything is > > cleaned up in the xarray? In that case, we can just do that after the > > loop. > > You do not need to call xa_destroy(). xa_destroy() exists for two > patterns: first, that you're storing values, not pointers in the tree, > and you can just delete the tree without leaking memory. second, that > you do xas_for_each() { kfree(p); }; xa_destroy(); that's more > efficient than xas_for_each() { kfree(p); xas_store(NULL); } as it > batches the freeing of the nodes to the end. > > if your code is naturally structured so that you delete the entries > after freeing them, you have no reason to call xa_destroy(). Thanks for elaborating. Based on this, I believe doing xas_for_each() { zswap_free_entry(); }; xa_destroy(); is both closer to the current code structure and more efficient.