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 A06CDC4167B for ; Thu, 30 Nov 2023 01:17:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 00E326B03FD; Wed, 29 Nov 2023 20:17:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id EFFAA6B03FF; Wed, 29 Nov 2023 20:17:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DA0786B0400; Wed, 29 Nov 2023 20:17:24 -0500 (EST) 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 CA81A6B03FD for ; Wed, 29 Nov 2023 20:17:24 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 94F2912067A for ; Thu, 30 Nov 2023 01:17:24 +0000 (UTC) X-FDA: 81512857608.09.1AAC8FB Received: from mail-il1-f176.google.com (mail-il1-f176.google.com [209.85.166.176]) by imf21.hostedemail.com (Postfix) with ESMTP id D8D8D1C0013 for ; Thu, 30 Nov 2023 01:17:22 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=K+10j5Cy; spf=pass (imf21.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.166.176 as permitted sender) smtp.mailfrom=nphamcs@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=1701307042; 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=6eWb4cpMSDpOhY83scp3GXSiLGlssYt4cGYuWNn8dfc=; b=gNDdR2sUm88AlDzVe+LT3qJ6at662jk+XN4tvbKqhBl+AZ5TrSberxSQE2wZGcDWHJ4v1F 0qXZaTYpwjNMpnRzoGy3OFbk1/Ljoh4A+uLxDHsfXUnokINREj0rD5PJJZFJazG9rI7KT2 dP/2nVf+3s+Tenxi5MIwAlbaNqiBcLc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701307042; a=rsa-sha256; cv=none; b=t37ICaiMnMxVXOHecnrdI2ApByDeYcXxJQBk4HS+TDZO4U2mYEtqELmTaOjubcpJa9W1Yd t4mU9gSE8i2R0FStYCmb31xWQzPhABNvHseADK2rv7TD/HJmoGzIwWeNp3rYnqsjIl90p6 OGWDjhm8rDaxC4eDmdLk9Jkj9GHlhHU= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=K+10j5Cy; spf=pass (imf21.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.166.176 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-il1-f176.google.com with SMTP id e9e14a558f8ab-35cd1133866so832405ab.2 for ; Wed, 29 Nov 2023 17:17:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701307042; x=1701911842; 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=6eWb4cpMSDpOhY83scp3GXSiLGlssYt4cGYuWNn8dfc=; b=K+10j5CyY08Msi1aEib8bWvGecAj4vqGiiIGAvrUxmx7nDTa7Sy7CrGiVRv8iQqVCk GTwRh7+KvQhJa7NnS1brxPt0C/BZUva3Dl6d+FTXUpFeeEv77S6J/pbiVElLOWLinxIF J8E9v6+WW8RMc7BT8LCKMYNttojhzITU4hLohF+dhz92QpwF+/pWZAmAFg78FUQXwSZd 3b3+l27CcuYpv8fK3zGeIM0KQgBpH9GpdeP7YvHVelxqpc/R4ikIP9GG8fbfV/tQVwJx ih+Ke+dpkw8NYvm9DcEICWS+admKW105dhcT7DdF5RaAAtg2sgRJ1bEYqiBVTlEUoa3U FGPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701307042; x=1701911842; 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=6eWb4cpMSDpOhY83scp3GXSiLGlssYt4cGYuWNn8dfc=; b=XnIKKcTzM5/F7B+QVQugZ8wWyolyNn4gCw3E4h8dKFK/6qr+fUqcczIYUjlgeU2Wzr S8nhSEW5nldvrc35OcEYyasjNX04g0XYCIVw11AVmJgakg0v8vE2/Z5vXHVBEJBf855H 2dGQK7HllOCTT1X78nxQqR4xSWjLbbM5FFYHicAUn+so0Jm3ZGHDOJf50Z7EEOtcTxox +exm0ybdEptvNST43+TIhNQ//pSv0fglkfAU8FMLeqQlK08uwFYhE2IMCnSqsMnrx4wX fyhH8wZlKWrdRqLFya6GxglNaM7LByFfyDGuVGGH3sVmxXPwf7DlKQGJw/ksTdBdauDY Zjfg== X-Gm-Message-State: AOJu0Yw8mcLVT9XeE460ARlelT2x6Zl4XhuKKrl4nEnHD9gpTtFrs5i6 LxWqF4SI6fp0o1JtTfk6f9+VC1OxDvzR3bM2bV8= X-Google-Smtp-Source: AGHT+IE5YuiZlN60NP+PTEYxX011dseeYtEXDZDUfubnFiHW22/wCFNaxyqnolgJzwpz4/cQjyTG35wtqDaax6dmI8Y= X-Received: by 2002:a05:6e02:811:b0:35c:e1fc:8b83 with SMTP id u17-20020a056e02081100b0035ce1fc8b83mr12988531ilm.16.1701307041738; Wed, 29 Nov 2023 17:17:21 -0800 (PST) MIME-Version: 1.0 References: <20231127234600.2971029-1-nphamcs@gmail.com> <20231127234600.2971029-4-nphamcs@gmail.com> <20231129151721.GC135852@cmpxchg.org> In-Reply-To: From: Nhat Pham Date: Wed, 29 Nov 2023 17:17:10 -0800 Message-ID: Subject: Re: [PATCH v7 3/6] zswap: make shrinking memcg-aware To: Johannes Weiner Cc: akpm@linux-foundation.org, cerasuolodomenico@gmail.com, yosryahmed@google.com, sjenning@redhat.com, ddstreet@ieee.org, vitaly.wool@konsulko.com, mhocko@kernel.org, roman.gushchin@linux.dev, shakeelb@google.com, muchun.song@linux.dev, chrisl@kernel.org, linux-mm@kvack.org, kernel-team@meta.com, linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, shuah@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: D8D8D1C0013 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 4sd9magp5aemx79d8rahaquc34cqo8ns X-HE-Tag: 1701307042-555551 X-HE-Meta: U2FsdGVkX18ihJCfL9CeJZmeA73x1kVOi8JtbogIZiYBRUfhdrKjTafFERZAnE/KpvvKa6qWR0D9merGeypOxW4uR3EbQIT1M3Sk9+OfK/bKfvKi2l7Q/Kch/dZJGwwxK9jNGB0ULh9CxBf8YZ3/yKh46AAveDgSpIk9dJR36wm8ThnfBa5Djf9dpuNoU2w7pW8204amV8uuyShTaqs8tFy12fe3u/Ozw8sjhMt0OqsROpt4ZeRKMvAVJCm6hVXe3dOSzCg5mxhy20IFD4zOFkM5JjTJf3satdawi4PojpS9ZhPavJovsK5fjjgexmxUpHcIdPf5HEeYJkd/nQb2vgUiTrrWwulQ5Lq8G2RQrMnhUaJxy/GWW9fqysq1CrGxGSp3CroWI5SuP0HH6EkTX1daHGjchrlfz+keWynGBMQKCakJg7XXbnXfyet4ptZgxHy2QwuxO/OoysnVKgOKOOfhyID0bneHeWzQp27je1AxLnZpv/sQCYT2dDJZhSY/J/xXIWO273Tlfh+Thf7xVqRtMrY66KTyvRDoUa7X0aJEeBKvQuCRCzPjYGNLzkAEUv661PfElGyxBquIy9uANzn4KcGOebnkZc0Nu6RCI2Mm86KoJWzC2/zqOhk3vszl5hOCoVudGuiTm0GwqQfaeLRJmDqTbBTnpRe8I6eiuqKvgvWomoVh72AWMo9wZbBtvVlDtf0jpIBBiIDTiUvqcd/KO0bruuC4BHHEzUnjaNzjZ9On3zFjzRezn+/fUHHOgJL3w7yHMWNInKvXqy3CtDs/lcAD3FTo5I5iylfQRR5eMwqu2/CjP92QI8iuObJYp52+rjeAHiJovvXI9IkzVfC2QlLPyjDFnmL1pYugbATrSeBpYran3U+DDBYJO1VlLNTwb0P4RjHAEwWG1V0cfJWYu2sNtKhIxPK++2VxdgXWMfAqGWluS1m1FAfzqvzUOCC85XNt7TO4HDt9O1Y mhMxXZOF knMZLEAVNHdcRP0/xLkqGGz/BIlAhn3BzgQE+fYX22Fvx7HesgdaikB7Zue8qJYpEfaVTnuTRy5h7hjF0if/DPY+b0wliANy7UqD8WHtCSZd89yZODcRemVrV+lla4BINHPVmkyUbLiBmxIxp5CYum4Wk+vhnl19esTjVR4JGMcnlrSsnPCX/atA2Ajri7pHM3YQMZ3IdqtzEReIoDeq1YnfMdjHvT9jwt7HxpOD9TWLGFptzeB4iuf3VG757G+yPn9bVlS3BclqJQLpvzosjDtmORjndVwg7q4HvYy8bsgQjDONMiM14elPk8iOX477WrwkEMPO8koHEcPmcO+R3bWc7juCSKBK0h6KLxfpHf+aMqZw9ndKNHafIA0NpsCmgB/Z/W2tTLhPPv/b13xr77QIdb1ZdofT3E+F8GUdOsPIJ2GD8EbxR8pO1Zg== 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 Wed, Nov 29, 2023 at 4:21=E2=80=AFPM Nhat Pham wrote= : > > On Wed, Nov 29, 2023 at 7:17=E2=80=AFAM Johannes Weiner wrote: > > > > On Mon, Nov 27, 2023 at 03:45:57PM -0800, Nhat Pham wrote: > > > static void shrink_worker(struct work_struct *w) > > > { > > > struct zswap_pool *pool =3D container_of(w, typeof(*pool), > > > shrink_work); > > > + struct mem_cgroup *memcg; > > > int ret, failures =3D 0; > > > > > > + /* global reclaim will select cgroup in a round-robin fashion. = */ > > > do { > > > - ret =3D zswap_reclaim_entry(pool); > > > - if (ret) { > > > - zswap_reject_reclaim_fail++; > > > - if (ret !=3D -EAGAIN) > > > - break; > > > + spin_lock(&zswap_pools_lock); > > > + memcg =3D pool->next_shrink =3D > > > + mem_cgroup_iter_online(NULL, pool->next_shrink,= NULL, true); > > > + > > > + /* full round trip */ > > > + if (!memcg) { > > > + spin_unlock(&zswap_pools_lock); > > > if (++failures =3D=3D MAX_RECLAIM_RETRIES) > > > break; > > > + > > > + goto resched; > > > } > > > + > > > + /* > > > + * Acquire an extra reference to the iterated memcg in = case the > > > + * original reference is dropped by the zswap offlining= callback. > > > + */ > > > + css_get(&memcg->css); > > > > struct mem_cgroup isn't defined when !CONFIG_MEMCG. This needs a > > mem_cgroup_get() wrapper and a dummy function for no-memcg builds. > > I got this exact same issue a couple of versions ago, but it was > hidden behind another helper function which can be implemented as a > no-op in the case of !CONFIG_MEMCG, so I forgot about it until now. It > always strikes me a bit weird that we have mem_cgroup_put() but not an > equivalent get - let me correct that. Actually, I'll instead implement mem_cgroup_tryget_online(), as we have to check for the cgroup's onlineness as well anyway! If it's online, then keep the extra reference - all good. If it's not, then drop the original reference before releasing the lock. > > > > > With that fixed, though, everything else looks good to me: > > > > Acked-by: Johannes Weiner > > Thanks for the review, Johannes!