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 26244C0218A for ; Thu, 30 Jan 2025 03:21:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A55812800B2; Wed, 29 Jan 2025 22:21:24 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9E7FC28009F; Wed, 29 Jan 2025 22:21:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 87EA82800B2; Wed, 29 Jan 2025 22:21:24 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 666B228009F for ; Wed, 29 Jan 2025 22:21:24 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id C7C921207E0 for ; Thu, 30 Jan 2025 03:21:23 +0000 (UTC) X-FDA: 83062667646.11.FD95726 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf08.hostedemail.com (Postfix) with ESMTP id D728C160004 for ; Thu, 30 Jan 2025 03:21:21 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=NxD0gWkO; spf=pass (imf08.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.182 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738207282; 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=8LFwMbEdYeenrWulReSvIxHvIEZ86bGfQIBWhk4yajU=; b=DRuqWEDGlCsTchFfTr5Tgv6xjYvDPmzDbocsdmHjNNYXbVMpOCj/8swV91vEgwNP0zqRX1 gysoeVzfganI5blfmJy6oqCAcQitOKUCeYiQz4HjWAp1UTvsAvF8VzJ+aoLWM0vkr0GmVz IN2rKGHWmFZVH1yPJsRu/s6/xT0OlvU= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=NxD0gWkO; spf=pass (imf08.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.182 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738207282; a=rsa-sha256; cv=none; b=DsHJOgzBNytF6Zp0ap4KO40wMCXmYFi8uX9oQm619GIijtU9VQS237ygkuVjGK05m8jZM3 8P5X/xfMTShK1G38BS4WnjiR4ZrExkOUD5WhghHbU4rYzbrA/YEWzgvbRh2ppIPVpPibsp qOouRgD1Y6UOZ1hMwAepqjGogN9+RMg= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2165cb60719so5568825ad.0 for ; Wed, 29 Jan 2025 19:21:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738207280; x=1738812080; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=8LFwMbEdYeenrWulReSvIxHvIEZ86bGfQIBWhk4yajU=; b=NxD0gWkOzkuxuNJFdD73L4gjNSWcrCRTPV8T/70ZLnpsjid/QKfNWdUJ4us41Nwu3m Q2MYZek/tMMKqwotpsIyFs1ZXZfh7tDd19bZg5s/nbMR1LHx9PwDqirqxFrKffRE39hL HePlD9BgLNSp8czhLGfc25wX9AxwhHxIvwZU4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738207280; x=1738812080; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=8LFwMbEdYeenrWulReSvIxHvIEZ86bGfQIBWhk4yajU=; b=MrocytfZFmbBw6yxkavLYFUv9byHmDUHjHbJS5dEHZCzneE2qMLoepwhH0eYhMvJ8o Kj98La6QYfQcHs9bdk9yQ5WGbXurmpWPy6tneqIlssN3BIDhpiB4hXFtuWdz3feCgvup InXmRZMWU5nrWcxGxzuo3Ey8YrvDkeu2nf5eHuRaC7rPLnMs/Rro2nh433i915ONoWzc xd71ejzysQlyH5eXX+44NTFYIThJlUaWCbg85QVCtJeovVZqaieSwH9v3nS9gp1U/7Z2 Obhz4DI5SinMEZqFPFg7THYUlLfA2yfyFown4I7+C2tF3f8/D81GNNlK+BlgcpkHvwwW VUWQ== X-Forwarded-Encrypted: i=1; AJvYcCWDoN3EwtxnCuhr/e9p3jyyMEFK3StUxnybLn66kY3Zx/7eDZwe+61xVv7ilyEZ4KjJU+1Q4BRcmg==@kvack.org X-Gm-Message-State: AOJu0YyJEb+Y4NywrpD/AO3a/ZBRyicb9f4KxLLprvGHFvLkXPvVdORU 93cp0UUCqYHLHwA+/dQsZU9MRXhkMZC+4lRjAh6vWHL5E6rJkY5ltsqkSziEjg== X-Gm-Gg: ASbGnctN4QRwhmXsZZiX1urfJ1qA9HsVYfZcbrONk4HfIZNws3QxHp3ohuKtf0RsQ4B 3wiY1uBLi3QdQpGPU9nMjcmyKiHAhkJN1gnzud7sDCzzFCTmjpbM3FXIT0WLuMskLTV4VxNXp/U PNeWfK/gVnjDRxLndcDzuPoboxmjw/7IDKBxUOPZrv6qyBAX0qtoGbtpzxSmQ3b91Y/JMZg/glr peqQ5rmvo3OdrMIzI1MXaxQLo1moeYSLQvA4AlLgbaKIzs6MMAvHqnx8O5RUUIvpDZiakjHtkI1 +BsYiY5+SQH4FvIZDzU= X-Google-Smtp-Source: AGHT+IGCVAO7sy+stGRd4OaRulYCU1tHhr1fCPxXx6dky7QdPIH1J9SteiQhQlAN7tDgfLKzNK5J5g== X-Received: by 2002:a17:902:fc4e:b0:216:2bd7:1c49 with SMTP id d9443c01a7336-21dd7d7bfb8mr98669585ad.29.1738207280645; Wed, 29 Jan 2025 19:21:20 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:d794:9e7a:5186:857e]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21de31ede21sm3581955ad.27.2025.01.29.19.21.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2025 19:21:20 -0800 (PST) Date: Thu, 30 Jan 2025 12:21:14 +0900 From: Sergey Senozhatsky To: Yosry Ahmed Cc: Sergey Senozhatsky , Andrew Morton , Minchan Kim , Johannes Weiner , Nhat Pham , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCHv1 4/6] zsmalloc: introduce new object mapping API Message-ID: <4slya4kbgfvkvlgkvwep2cgghs233lfhfpctfrrgvho4fpgzwr@cjp643bd4ml6> References: <20250129064853.2210753-1-senozhatsky@chromium.org> <20250129064853.2210753-5-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: D728C160004 X-Stat-Signature: e8obf9eo3uskq1qt683debd8w7u7t6ax X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1738207281-936278 X-HE-Meta: U2FsdGVkX19/TdxUHD2dRhSGFCRzdeQpXrkkZ/HAkNLnODHS9T1io4rXcXqD4pvRnFV9496mJspZwoR5C05zho9Z8l1jH0qsKqJamIbuOLRnqe4K0ERnAyZsSICabdo3IXQLlMIPs5QqmDlKLWbb/r6igTQqWdekNqOL6m3Fh5OJKZyp3r1KLue4cMRUbMIMfmQk+0pDaxyDJ2kwIVfCfCA8F19kTfmI/ZgXwYhp/4Mxhyr6KOHVhsIz2fA5ROiOAbUHwPKTJJxwF+SXMeMOJ+6T0fY5UoFgv4gMU0EYL81CmJMffzEwiAq3Cm3sV1vZ96lmHzFveJVd+JJZWpywIxwuwFGNw9ws8iDV68989yGZfdrY9Ou/tLemKAa2X9N/A+JYRU9xQs1Gi5e01mEE7+UMexxfiSkCrxg/DX5e+UiLeFKh2K3aXIVxJxR3U9+5nO2RiU8Q0Xnk9ShSMqGrNqd/VfQSxxcZYdNtkI53/VDwAVc50sAbP25JXp630vrWctjiM9VMAo0OJ99+gEeh+Oka+zWdF1UaomXUXL+SmLssegAGcNhE0ae1YIEQov4w5ksDSrXxyadJSOqY+sTGLBycfh1YCDoBkSV62ykAMWdhuWJhHKKXZEhFBTWVfyWflnUzuU8MzhlU7+FiEnk3bVjXHcGn+Py9FudqfxZa4Ly7hlpbluM0bZbY8J0qIWMA+vxw6vahqiE9NYHp0xK53o+T/dJqsLAzN/kYyU1lFGiGv/9P8CXKhvyyu3E0HTMWNCIt31fuKbs5Ktb6A4zoNyxZNeCIMNt8qoyeGuscG/CnazXGq0fCDS1hf0u/eXe5gOjy5nneA0MxhDuEfqp1p6HP8YCpu5MooHESidcOQQbts1KqWD3s5raEJidMj9oyyURE5/wbe5qT9zYbNPu6XfOvPi3DOUw1tT7dPNReFIrpAAnKGZAB78mUxEHfjCDotdYF8P0FvdElR3w7Tv0 lZHVuwaZ 74FUvg8MOWsFNZOV3ISLHFv/DiJlYYKWj2Drd7HndlrhHjpFXYwReNFtVLlGeox4NxNWAiMnktGEJ0u8yM2ZGA9yHGldla9WtrnzEXL30YK4gNgduT80bXXBA8rT+Ji+dATRZ1U05gy/xids/Ph9K67WT9ip+OmAHdLZtKBuuQjTFlyaMS1qJuXEpuSP2bzlwspjaYpiGlYXznlqpzIX/4ZNJZSSj2PMK4AwcTBuIN3OjvWtZ6iCfIRdWG/B5g+pMkZ7vkMc8/5MMSiRLKE1AE5087Yi7aWfnanSuEkPc4tES5R46Gqs8tHAdJbx2KP7ONO3eWyBQVXKYj/7kwkjG1Pd+6B/ILZM354Qe 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 (25/01/29 17:31), Yosry Ahmed wrote: > On Wed, Jan 29, 2025 at 03:43:50PM +0900, Sergey Senozhatsky wrote: [..] > > The old API will stay around until the remaining users switch > > to the new one. After that we'll also remove zsmalloc per-CPU > > buffer and CPU hotplug handling. > > I will propose removing zbud (in addition to z3fold) soon. If that gets > in then we'd only need to update zpool and zswap code to use the new > API. I can take care of that if you want. Sounds like a plan. I think I saw zbud deprecation patch (along with z3fold removal). I guess you still want to keep zpool, just because it's there already? > > Signed-off-by: Sergey Senozhatsky > > I have a couple of questions below, but generally LGTM: > > Reviewed-by: Yosry Ahmed Thanks. [..] > > +void zs_obj_read_end(struct zs_pool *pool, unsigned long handle, > > + void *handle_mem); > > +void *zs_obj_read_begin(struct zs_pool *pool, unsigned long handle, > > + void *local_copy); > > Nit: Any reason to put 'end' before 'begin'? Same for the function > definitions. An old habit, I just put release() before init() (or end() before begin()) because often times you call end() from begin() error path. Not in this particular case, but I just do that semi-automatically. [..] > > + if (off + class->size <= PAGE_SIZE) { > > + /* this object is contained entirely within a page */ > > + void *dst = kmap_local_zpdesc(zpdesc); > > + > > + if (!ZsHugePage(zspage)) > > + off += ZS_HANDLE_SIZE; > > + memcpy(dst + off, handle_mem, mem_len); > > + kunmap_local(dst); > > + } else { > > + size_t sizes[2]; > > + > > + /* this object spans two pages */ > > + off += ZS_HANDLE_SIZE; > > Are huge pages always stored in a single page? If yes, can we just do > this before the if block for both cases: Yes. > if (!ZsHugePage(zspage)) > off += ZS_HANDLE_SIZE; Looks good.