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 4C82AC54E58 for ; Sat, 16 Mar 2024 01:31:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7F2E880153; Fri, 15 Mar 2024 21:31:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7A280800B4; Fri, 15 Mar 2024 21:31:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 66A9C80153; Fri, 15 Mar 2024 21:31:19 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 55645800B4 for ; Fri, 15 Mar 2024 21:31:19 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E39D6C0995 for ; Sat, 16 Mar 2024 01:31:18 +0000 (UTC) X-FDA: 81901174236.19.173951C Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by imf11.hostedemail.com (Postfix) with ESMTP id 2509540006 for ; Sat, 16 Mar 2024 01:31:16 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=GmGUb+oP; spf=pass (imf11.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.51 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=1710552677; 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=YWDwaTOsUlEtY3mShuSOTHZs7gMc1813DXmknXHM1kI=; b=a0goZIHaeu0Qes1gcOZQ7Ic37T2FjVBw+Xfk14kV4+Xmn1f0PKny965/TsP3PY6je5vR4p eyrdHGNrFH2olyPePc6cZvC39weG+RsSn7VgsRESkN86CsLzsqsqg7a1SNLdJlJz9ihAfj RZs9+HT2gbxTj2JkMd8fqmf+mJIhmbc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710552677; a=rsa-sha256; cv=none; b=Efc6vNOJQamFJcMXyxqysdqrH72eFaiK6aPnP9CmWSx8JwG9Vie8irbkH+cNMU3bxmKmNH GQqY2RM7m33L78Qfh6UWuu03nLB7XSMz2ZR3n5S6wp/1nJPn4A3NN5IzdAYY3i0WLu3h34 sUtXuZHFbn4+rLQHnkARCLmwCJrO0po= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=GmGUb+oP; spf=pass (imf11.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.51 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-a46a7208eedso2763566b.0 for ; Fri, 15 Mar 2024 18:31:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710552675; x=1711157475; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=YWDwaTOsUlEtY3mShuSOTHZs7gMc1813DXmknXHM1kI=; b=GmGUb+oPKIIJXPrYnJQxwBTiq85VwnVGPg/agzjqbfs+G2vyWuu7jVPzoXImUeAHLH oCaeVg0czoQ78/GYYlo2cDVk2vFGfOMJkyXKSIl9xNXY7jTH53RskH+Mzp7TUEKRbx8q ozXXee+Qk/MlkLy8QSRFG+dF/47qn0he5q1Xn4MuiHEUrqqG3z6G4VM2kCUbRM9yknjX PQZS1C8RgWfVvMvaYnlcmXiCTc0w5gwvJTjN4C2hgme/Jx1P77Z8QL/rnGnS7iFlmqky /vU8IUKgF9cEhNjCy5cPxHXxSBaMRf2xbVBS3mIAFFpJMrM39FdjNk6IzIzwB/HuQZ9o 1Brg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710552675; x=1711157475; h=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=YWDwaTOsUlEtY3mShuSOTHZs7gMc1813DXmknXHM1kI=; b=haHS4CO12KTAkDqSX8XJMfMoQOgDQpuu5QQmhHa00UWZ5lU9fdFR8x3GTSPiDJqHCH 3VjlfnjGfaU8M4rk54RREFYNdJmeIm7WM2eZtQN8A3IVHbBuejKyJwh6fd8hRYAad3vs R+jOgxFJOaxTtGLiTei4qb0u0aUjSO0d5l0ZfT6zoXn20rnQk5vyjNeaAmuN2FZELSL5 nfkBa8e9COZUfl2gnc5SmkCNcGuLOytObWku1H/yBk8zki6YqiMjSa16VVjCYWRUrK+h p1jVzpWvbDxhIbYk8QhXQkUBn1XTPQCiusCDBBwVKEd0fAG4yWrrG+oXwegOJ8Z+Vzgk TTrw== X-Forwarded-Encrypted: i=1; AJvYcCXOSyNS6PYDHbRJFfbEH4UgQ/QgFy1FIA8VVXfyAQgCX8J1N5grhGoB1y1quwBDwS0vhVtaA9V8f8FfWbASGZqe1iU= X-Gm-Message-State: AOJu0YwXjDH3h6a/1ITZewXg+T5K94vPFpEsOrcUFzTeoMr7Eq+/HAkK GPQa2b8LH8SrcUP4QdIzg1jWyWJgKyO5RmsmsBFuLPoxDugzG5JlEe4Vs0rsvd4pkWxFUU2Xa/d 5Gl5xXUGANC+T/tFkmlqvpimiOeNzNwHDl7jS X-Google-Smtp-Source: AGHT+IH3vsmZkRLUAfTuW89cfVVfV7DhZvPKkzKBRBk3AaoQYT41tDzBjrcMdyG7wia+SoNFvj3BhdIzfflQGMl3xQo= X-Received: by 2002:a17:907:d50c:b0:a45:f39e:aad with SMTP id wb12-20020a170907d50c00b00a45f39e0aadmr4394055ejc.1.1710552675418; Fri, 15 Mar 2024 18:31:15 -0700 (PDT) MIME-Version: 1.0 References: <20240312-zswap-xarray-v6-1-1b82027d7082@kernel.org> In-Reply-To: <20240312-zswap-xarray-v6-1-1b82027d7082@kernel.org> From: Yosry Ahmed Date: Fri, 15 Mar 2024 18:30:37 -0700 Message-ID: Subject: Re: [PATCH v6] zswap: replace RB tree with xarray To: Chris Li Cc: Andrew Morton , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Nhat Pham , Johannes Weiner , "Matthew Wilcox (Oracle)" , Chengming Zhou , Barry Song , Barry Song , Chengming Zhou Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: 7in5pqmfe4sf9ehiz94wfn5hmhy4k8ed X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 2509540006 X-Rspam-User: X-HE-Tag: 1710552676-562376 X-HE-Meta: U2FsdGVkX1+xppw01V8Qu0ilEIPjmnS5i3Nvu+k+InRJb72BvFEPYGnZE+0JXr7IhpeFliGDqR4R62R0QO6SN+YSg4QnGNo0RaZA7v1EXEBCMWn3NAl7I9yeTMntRRD27GMbsw6A0r+4Ht4DOVKxy8gWOYimgdPOsJpoMvXz7fMWJnC2ej2PqKS/YwBNy7GCr35XJr3ipb10U3vTFj2iE8KZcv7d04oMO6GYejhI518B4adTv1ZVOA3EGg0TK4i2GJsGgz9cNmSL1VCSTbNVVLgieS4T8N+dyHhK47cjU+IY8ERMgTugv2sQkafvvFGWSRE1c7bBgzqUG1L7MImAqXHyJzCbJh0zsy3Qklkd0++a8FTadIF/BU8/ROgWb5n6y5pi7VUCP6Gh3X9aYRRKjF+qLyp+s8jaOWQgSXR07civvv7IAVOaNCjqyBxjsPaWQG2WP/vFqlAgsY+S5ECYiS7cQK16Hj8e3e8cTuVdBNMkZTj1Fs909eZDk/LRSe42YaNT5fOb15IzRCo9Zut+cG/sWxtojGhKLDXUAN/m6QYD60cpXCx6W1UDdGl4LgU6M9o90CPgiB75je+SmAIp59mrBxJZFFvb3Q76OUXDubcl232ksIhqxmOrufp8rvnaKFFuElvQ8cvnD/hGfNG+ZHd9pyTcj4HrEQTpln4lQEmYVFgqn14fHnhqsm9bcb/RvCihQxNRPwmrh7+nVjE6GwWmSkN14CPi2iNniehGgq7R8By13BPbhehWjufwMNpRaLcJuvT92cyb/beHdU13ZUH4bx7u8VFl2BgEds4frDN51c7u03b7aK8XY0BoCT0ScB3q2gArM01HQkBpVsYYLoQE0pOgwjWNX25RUuOJCu5Pf1RtdwR82cXZK7+57LI0yDc7F8y6Q05IUdZcPz1+Ol/kB41vDLZRd2jUjkufFvbFuBLqgpgB4iyHtLotBH3t95me7pUlZVknKu+srge 3UDLlmlp p5RQj6RQ7p0VM8MIcsvXfuhGww+siCM5skbsdKnqPcA+2+sqwaGWXjAV29GeTE2NQeD6FLppfRkFAdg3sp6uUVES68c6nxjf2gmaE+axBqdRB+qN/91ssGPluVf7+Q6r3P4gI+dCrkUZvXfk4dVaigpMZVbRvQGH7BYgevNl96a4gGzxcHfC6TaF86AcXd+e+HSBxIboy5nfz6WhWR7cOXohpF7x83FXPGOoC 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: [..] > > @@ -1555,28 +1473,35 @@ bool zswap_store(struct folio *folio) > insert_entry: > entry->swpentry = swp; > entry->objcg = objcg; > - if (objcg) { > - obj_cgroup_charge_zswap(objcg, entry->length); > - /* Account before objcg ref is moved to tree */ I do not understand this comment, but it seems to care about the charging happening before the entry is added to the tree. This patch will move it after the tree insertion. Johannes, do you mind elaborating what this comment is referring to? It should be clarified, updated, or removed as part of this movement. > > - count_objcg_event(objcg, ZSWPOUT); > - } > > - /* map */ > - spin_lock(&tree->lock); > /* > * The folio may have been dirtied again, invalidate the > * possibly stale entry before inserting the new entry. > */ > - if (zswap_rb_insert(&tree->rbroot, entry, &dupentry) == -EEXIST) { > - zswap_invalidate_entry(tree, dupentry); > - WARN_ON(zswap_rb_insert(&tree->rbroot, entry, &dupentry)); > + old = xa_store(tree, offset, entry, GFP_KERNEL); > + if (xa_is_err(old)) { > + int err = xa_err(old); > + if (err == -ENOMEM) > + zswap_reject_alloc_fail++; > + else > + WARN_ONCE(err, "%s: xa_store failed: %d\n", > + __func__, err); > + goto store_failed; > + } > + if (old) > + zswap_entry_free(old); > + > + if (objcg) { > + obj_cgroup_charge_zswap(objcg, entry->length); > + /* Account before objcg ref is moved to tree */ > + count_objcg_event(objcg, ZSWPOUT); > } > + > if (entry->length) { > INIT_LIST_HEAD(&entry->lru); > zswap_lru_add(&zswap.list_lru, entry); > atomic_inc(&zswap.nr_stored); > } > - spin_unlock(&tree->lock); > > /* update stats */ > atomic_inc(&zswap_stored_pages); [..]