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 26352EB64D7 for ; Sun, 18 Jun 2023 05:29:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 814DC6B0071; Sun, 18 Jun 2023 01:29:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7C56F6B0072; Sun, 18 Jun 2023 01:29:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 68C9A8E0001; Sun, 18 Jun 2023 01:29:29 -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 551356B0071 for ; Sun, 18 Jun 2023 01:29:29 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 1E7B6A07D9 for ; Sun, 18 Jun 2023 05:29:29 +0000 (UTC) X-FDA: 80914740858.22.436475D Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) by imf06.hostedemail.com (Postfix) with ESMTP id 44EB518000B for ; Sun, 18 Jun 2023 05:29:26 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b="QshDGO/8"; spf=pass (imf06.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.45 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=1687066166; 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=/UTGt7iKNdIzFHJhjEBhwjHxC/KeXkq7iK+gyIRePnA=; b=Dl1EWqX7g3knL8I7Px7x86JKnZUQJwyZn7JN2E8Puz4csMUC8gUwBsNR8li0SmrggdQTm9 eWAaw+UquoFclfVniPwEoSQ8d9K9iLK1FeshoeVysV9cowLZGd5px+SIqiPRBMbNAuDhmA +2VVP/ehCy7Au/Ar3PgzeAuogDxnbGo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687066166; a=rsa-sha256; cv=none; b=F3zCvssavW3nZBeEj40ee+2RgiJtquDN9QJykZ1K1+E6/n9V/k4p/+7BWkJyzlA/RtDx4h JhG9TpyKLWW02DLuLQxFF6kCtVkFTs3I4U+Xb7Kg+qhI2YlpW2XcSRc9+OLywNk+XuFboG 8ELTpEaBNlDLhKSL3sM930L0fBR/m08= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b="QshDGO/8"; spf=pass (imf06.hostedemail.com: domain of yosryahmed@google.com designates 209.85.218.45 as permitted sender) smtp.mailfrom=yosryahmed@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-986d8332f50so230131066b.0 for ; Sat, 17 Jun 2023 22:29:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687066165; x=1689658165; 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=/UTGt7iKNdIzFHJhjEBhwjHxC/KeXkq7iK+gyIRePnA=; b=QshDGO/8+dQtptQe3oTeB5REZopFkvHAuQfSsiKGAlct6fS75RHbXsjUJ4vH6MYP/w wVr+IB5/2Ay8Cra/ELGMyO4M62SI/Is8NUrAB1ZTkq43EXauP+PgbXc81Qdo9gL9M8Uh GBIemPdCaTDPg27+tVHwZe2rFUt8KUag/JsGzvgSRBpCecWwSGQqzXUct2vFwKL06yxW 8PBGS0nqPySf44GUn3lj/TXdCMpslJTlsWleshCYov/2Cw49sxmuIP7eFLta9TU43DF3 I+Sl/ZI0v3FzZeYVv7tWa8oNZTbuMottFRyrS9N9b3bcWoNuAsbhgdiyx/ATcz09vdcW cO4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687066165; x=1689658165; 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=/UTGt7iKNdIzFHJhjEBhwjHxC/KeXkq7iK+gyIRePnA=; b=bURqQOmeJ/nlCs9XESp4pP3UjXgk9yAhsrEzKYdCAsPWJktyIbOmqwLoowyYR0IPNU /JftQLK46D8AYdYfrOyOEYX3r5zIzg7mJJbjKSiXOCSbP0UabA1nvDSR9CZkPrJ93G2+ hJKhSsvIZUVrb0Fscmcvf3cAaFIO3ORtO6omF0oVAITYAPxiN4KfaQKd43Dwv+1OiAlL tiBhqoPErj9DzlsDIJl3+SIcLR3CUTJuc07uxZiHTmGWE6oPgQMsyF9YBD+QOWOtxbHI gBkaUoRWaWlW7q+a/lsPJU1AnO3a80LJXp3GQZaB28OQBHtV4lMVg1zC+bnvo6dxiQq1 y8Fw== X-Gm-Message-State: AC+VfDywlxyLybAa4JLtLlMq4e2KW1uf6eSjCaQ8G/KpSQ6l/VDUNCtW ju4Sm9agbRS3rWcU0e4a90XF+zudp/JYSNAm1xpUDg== X-Google-Smtp-Source: ACHHUZ5Owm1j445iAj1AbhlY7ujp9HjjFWMq1Heyx1o80K7E8d2gzF17j4sBfmODCeJ2WmON79zFq5nRPXSLKi1E5IY= X-Received: by 2002:a17:906:4793:b0:96f:5747:a0de with SMTP id cw19-20020a170906479300b0096f5747a0demr5942787ejc.6.1687066164695; Sat, 17 Jun 2023 22:29:24 -0700 (PDT) MIME-Version: 1.0 References: <20230612093815.133504-1-cerasuolodomenico@gmail.com> <20230612093815.133504-2-cerasuolodomenico@gmail.com> <20230618043857.GA2417524@google.com> <20230618052526.GB2417524@google.com> In-Reply-To: <20230618052526.GB2417524@google.com> From: Yosry Ahmed Date: Sat, 17 Jun 2023 22:28:48 -0700 Message-ID: Subject: Re: [PATCH v3 1/7] mm: zswap: add pool shrinking mechanism To: Sergey Senozhatsky Cc: Domenico Cerasuolo , vitaly.wool@konsulko.com, minchan@kernel.org, linux-mm@kvack.org, ddstreet@ieee.org, sjenning@redhat.com, nphamcs@gmail.com, hannes@cmpxchg.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, kernel-team@meta.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 44EB518000B X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: kf4pu997ds1j5d1xkddngnjiyziz1715 X-HE-Tag: 1687066166-734899 X-HE-Meta: U2FsdGVkX197fegsJdE5FWN1lbTKZe+4sQVRs9wSPHObBfvpejZaN8461nfZCxJ7QumB+uI3q95hV5iJetjJYVkiVrywIhyCgHbLlfL8AjQldCyVPml12uMdpgzvr2fx+ysw3RVBZV5sxSHXIUfwjqT1EWP6At8ofw4gFF1MX8e2/0qFEYmInNu9DLIa5amAfG2JYCfqdW2t4igLuVm2bbjQ/fiP3gazheYqJ9i1OgHKVP/WeOe65XPdZgg+5CkGDyATKGYAl1aodV7sp2glNcriBwdTQ2i/NztTTct6GkjEduNwRmMnbgxWnCtHFNj+P4sa3cx5jKIVWBZl1yVBK0XKH7EtGr0Ig0+SP7IoF+n1ZS0w9XN8trYELN/orreYEEQyyG7MP77ru76Oq46GqWb4nNyKOmd51lR7dbU64YlThqp2x8hh6ql/xRi+5rDsXbPL2cs8+AfEP0ZLYUN6WmjXfMBJzhG9Z/kpz/wowYqgKpOOCIhwK5nq4xe/ZLfet9N9t6Tnd7m/AI3SXVWXmX+OXgwEi7o/2DVqq0GcY1ygmNN3sQSkirWrwxYBJm/h8r+ffyfA5Ifx9REnutKHOPLoKJP+xPfa4uX+c0s1Id/dXmX/RivOE1oXI5WutZeVrOUg8zKZ4cSXs6ssPjqnK7NO8lkQ7gDQT/l0tRXeJo5+jF9aceOfVqno60JZVkEyL2EyAWVSnjlb4vIAd7cxmpy9KiTnIzJGAGBNkGKwSY1XqnNwYhzVdq7wGQgHFK7MCYscOUv0DCI4B09wf6G203U15TcPL0B2FNrV0RhOdUJIS2jBhevYgALdwNbANbYQOrRKyBIQfIaqOQI2ywMmUO/XTTICzFFHeLZS+IAZmj6oCHj/UMc1hW+iHvUwW4oDDXymGQq4v8PF8HYl1ZgLa4HptbB+fb+EMw3xoXy/a7eIzYtLO0u01oxX/7U4OHTTVvQK26qzAJD5x5JOeCM fR5ZYCmH NCsumWK7PiO2tnT9ltqj2QoHEWLZUK3mE5145dgnSKI74pbhXWWgJZhpbp3KdziCZA2XOHGwhPsrejkyxVti0dqJ6DCHisGAZn+HdUUH8lcBgwE86p4xRgIw5DtgT0pPBKUSNNHuw3Bj5IsJQDUQonFoCkTv0FL1pGaq9lBL2fdgx6W1F91vmZlDkbaIPSdQSqj+sB7ieAhdadgo/bdHmBt458vaA2SV0OgefGbnKzL/JeayHX/yMjYZwePXPgMQzy/3u0RO78fDF5U9txQrN+9kaYBn44kXzGrH5 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: On Sat, Jun 17, 2023 at 10:25=E2=80=AFPM Sergey Senozhatsky wrote: > > On (23/06/17 21:48), Yosry Ahmed wrote: > > > On (23/06/12 11:38), Domenico Cerasuolo wrote: > > > > +static int zswap_reclaim_entry(struct zswap_pool *pool) > > > > +{ > > > > + struct zswap_header *zhdr; > > > > + struct zswap_entry *entry; > > > > + struct zswap_tree *tree; > > > > + pgoff_t swpoffset; > > > > + int ret; > > > > + > > > > + /* Get an entry off the LRU */ > > > > + spin_lock(&pool->lru_lock); > > > > + if (list_empty(&pool->lru)) { > > > > + spin_unlock(&pool->lru_lock); > > > > + return -EINVAL; > > > > + } > > > > + entry =3D list_last_entry(&pool->lru, struct zswap_entry, lru= ); > > > > + list_del_init(&entry->lru); > > > > > > A quick question: should we zswap_entry_get() here? > > > > We need to hold the tree lock for that, and the lock ordering is tree > > lock -> lru lock. If we try to grab the tree lock here we may > > deadlock. > > We can deadlock doing this? > > lock tree_lock > lock lru_lock > list_del_init > unlock lru_lock > entry_get > unlock tree_lock > writeback We don't know which tree the zswap entry belongs to until we get from the LRU -- so we can't hold the tree lock before getting the entry from the lru (and to get the entry from the LRU we need the lru_lock).