From patchwork Mon Feb 20 13:22:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hyeonggon Yoo <42.hyeyoo@gmail.com> X-Patchwork-Id: 13146450 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 2C5E7C05027 for ; Mon, 20 Feb 2023 13:23:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BF5CA6B0078; Mon, 20 Feb 2023 08:23:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BA7916B0099; Mon, 20 Feb 2023 08:23:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A94A86B009A; Mon, 20 Feb 2023 08:23:36 -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 9A4B36B0078 for ; Mon, 20 Feb 2023 08:23:36 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 54C2D403EF for ; Mon, 20 Feb 2023 13:23:36 +0000 (UTC) X-FDA: 80487737232.21.A23C277 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by imf11.hostedemail.com (Postfix) with ESMTP id 850874001D for ; Mon, 20 Feb 2023 13:23:34 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="oQ/UaQb6"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.216.44 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676899414; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=fklqQHaRQO40JhU8fjbLQjruXgE49zqYwbFi5NZyQ14=; b=tLCDT/4ZAatqMFgcKG4VC8kysfftrrDQ2UOKr7x+Pt4fVZ8HKf+8vyxfoQwB/Oi5DL7A64 9TfYI7KKIlQwBszVDoZtApPOuRUFAdLa7VdM+TacMPtfVcjVHJgneWZ/cwPReb1at+67x3 clpvifwMwb8/2d5bAXKVpVNB5TQIFrA= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b="oQ/UaQb6"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf11.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.216.44 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676899414; a=rsa-sha256; cv=none; b=AYF5jPFw2WJk7dnwAdskhwRqHoDmDVm300OaS0WMIaTW7ccjF9CitDuC26jGtHkZ8mcRyV 0PlUSyxX03NqebaxALTtZ8z/DszelmZnEW7dyoi8l//xgSUG2pw4P/169J85kCmaZP2i75 tsQeRWc57vZ4XxTWW46lluaI3pkv180= Received: by mail-pj1-f44.google.com with SMTP id co23-20020a17090afe9700b002341fadc370so1377425pjb.1 for ; Mon, 20 Feb 2023 05:23:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fklqQHaRQO40JhU8fjbLQjruXgE49zqYwbFi5NZyQ14=; b=oQ/UaQb6HsBay0gZCVokOIjgvvN6m8zK5djL3ewbZhKjtMQ1jg0/wf12WvZoJQCiZW E2AFJagUqMl0fc5M2vpUEvfaskyBfNEK0qAg/xXaoC4T8Qd2ormpW7yEFDGmF8RLsppQ v7AbZHWo98p/LTKs9hA4I6dpP7y4nXt/ab+AYFGvOh1ssZuQvq+aBrQLqiB6HPPH0qrt XoXH0w976rTb2Z0GnnaUE/LfBSK8d677f63+x+NOSu2m7MRBOaFAn2eXOWvGAWbBNiCN zHfMRyMQhoRt8kGXvIaD9OlnKdKISlsH3+0uqHMZ6GS0rKALFbMwG0Iy3EpYMXwLluwl HMxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fklqQHaRQO40JhU8fjbLQjruXgE49zqYwbFi5NZyQ14=; b=E43g40/M6woFjDYwy+eOnL1IcreCfVdpwGuScXht4O5vin4dJSkgNxKeVNUliCdw8M QEaaKeid1A87BxICQmNvgXwYjIZF5EFMdEFP+p6tWDT2AZI0NN/hGYBc4nN/9Qmobrj7 jpdSdv91okbiceKURxFZPaY8fDrjooTulYuQ1K4LNBTIItkayfZSkWYsoiT14piq3qgr FxrnEgByeGAEWE072rdhNAPpxbzZLB9SH+tpudBBN1hhbqwkWwpADgV68UuklioWgUu1 eEkAN1IbWkE+d35jL2e2Ptww0EaQTC72boS2yMlFpibWiFP7sfIv6rzkZrWJbmH4tBrv MwjA== X-Gm-Message-State: AO0yUKVvgGn23+Ux9ZMA2nmlC75nAz+Dc2TPa3e20cHigjKh137R0oVj ia5+9eAG/jLMNU5YW9WsnGmVH3BbJExWuA== X-Google-Smtp-Source: AK7set+L+3KzxmXTcctt4su908z/Pvne63YJgcS28cjuQbS/kvIg64C2kvlWAzeYISCxwnVCjPDJgw== X-Received: by 2002:a17:903:803:b0:19a:a404:af47 with SMTP id kr3-20020a170903080300b0019aa404af47mr1918600plb.4.1676899413505; Mon, 20 Feb 2023 05:23:33 -0800 (PST) Received: from test-ha.kr-central-1.c.kakaoi.io ([210.109.63.229]) by smtp.gmail.com with ESMTPSA id x2-20020a170902fe8200b0019c13d032d8sm6125436plm.253.2023.02.20.05.23.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Feb 2023 05:23:32 -0800 (PST) From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: Minchan Kim , Sergey Senozhatsky , Matthew Wilcox Cc: Andrew Morton , linux-mm@kvack.org, Hyeonggon Yoo <42.hyeyoo@gmail.com> Subject: [RFC PATCH 22/25] mm/zsmalloc: convert restore_freelist() to use zsdesc Date: Mon, 20 Feb 2023 13:22:15 +0000 Message-Id: <20230220132218.546369-23-42.hyeyoo@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230220132218.546369-1-42.hyeyoo@gmail.com> References: <20230220132218.546369-1-42.hyeyoo@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 850874001D X-Stat-Signature: 94o691dwcxr98cq5w36zrdforpwkprej X-HE-Tag: 1676899414-463669 X-HE-Meta: U2FsdGVkX18LT0J3zlLdHhNxYP+zv2+nh16GSdCeo/W4zbiy/f76c18mV7Oz3Tr5fVjVZy1f/EHBb2y0F/7FHfMiltW+a1/eYpE1ulLmQXTMqWiymHPc8vU26mV9crkVJuz9xFyWexMXGWY4NWV6sfdtDvJwgufpXVDySa/6cohAPXbm7QgCIji+4wsHF4iAkQ+66eaQOvMRRAyHOo/kvDG2y4nReZkDTlSRoyKsBn4E304oqVRvHKyQXU1c8DHrLoToXiclH0ONNS2X1Aeaowb2P/4ff1wy1kA1dENnWVZBfKn4ghaKWfwLiNahdAFZ1lgF1NcCwKqqcnUmjp9Cr7h7GMWwcIESHRiEQHVyV8vCRUWVfp4pVR8LCAgxOsTm91otAYhhHEB/Mge1Jfc9t6+/ykRYhTrH1IVT37o6/chUUDTkMUD8wDNPHTXhar4em1rR29XUDh42VY+LleadInxI4eaHJ2ZNfJYmVGf0pfXZg3Yl71vIM26ptGJK/oqGwR0DhBVIoqHZFEXcgfPk9E38AqX96gGLYz2tZy2IR5XmGQ6mD4qFdUMnQL1ZUQx4cYjw4jLfim1PFFIpMngmmRxnM1VfjkNr8pOR07QZpEhOjtKjHbRQHR+ShTh2zwqZwMBJjjaMNskRZDHQz9xIKkOTw2Era2ZobId55wJDukGbbxmEaFr6trQpJX6rHsMPwGIjaCsq0iblGF8iWrbHWxj8W8HPXqEI4xG3jHQwvkbTq7z5bSe6JvGtwST4wHLQ2ZsbrYQ6RKCVWjhf92J89ZqCwqU18QGGK8gQbDtczZIaMeOa8eNY0zwrYk2ydYSsW0z3UIll7JvrfG0KWIv2AGzNRUEhDiIjttCkVTOh2ZEvLUi7715avNB2PrXBp1yZwNhS0j3n8nM1DxjpoyjM8OS56y7VmXK7Vx4EObZsdm8KfJtfimcOePlqvjMW8kHCH205dK6hf2DoHwkcTuL ekq1xlfO DmhbMJikZrn7JmKM6bIdK+e1OivCGASDvqz094RCQZ9nL4ngPJs/kkgQgbH5dQhKPWYoWKeZLD38nbVgLoyPBfX/iLay71U6GqIh4ilTpvm03H42+RhPCb6xYAgTs+eySnfclewOY0RFwWB+JRQ/lQ355plFZPU7VihT8CYuh9m+ymZow6pD4zpdjlZB2Bqx5BAtAtPa8XOLXOVGKPkxRnj5ZBQjNBsZZJnXolcqoaqjz3sxfvtFCp6Q8hsAPGNYYPHsyFAmuGrOn3PuV2GQ6xdmTn/K9+GO+DuezRfObrpyk8IBS/9i52DEjN7fJuuBfsvtvrWDF04Gk//c1a1bmqZWmr1EjDeYdxNjrKCDerRrdRb5pZFu6tpFrMYUAw3yXAdW+t1Fpacs9AtdMLgez2YBtFnHMXJWjjDB4qVO8oYtWxkaSWzWB3MdmxzxFDf8aA7Y/9OV9d7xkVLhJvPDtD9/KqeZG+kHSmUgQ3BShnRats4og5aBMjVeZYCkWRXkveVDZuDFGsHa7TBWVLg3Y9kuZpw66cTEL5pFJGuTzrd2Ze6/WswR2YIKvYCmZvEr9H+WJcQVdGBx03CBsL64b9ROBAWNzrbiyu9K/ 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: Convert restore_freelist() to use zsdesc. Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com> --- mm/zsmalloc.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index e9202bb14704..b6ca93012c9a 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -2718,29 +2718,29 @@ static void restore_freelist(struct zs_pool *pool, struct size_class *class, { unsigned int obj_idx = 0; unsigned long handle, off = 0; /* off is within-page offset */ - struct page *page = get_first_page(zspage); + struct zsdesc *zsdesc = get_first_zsdesc(zspage); struct link_free *prev_free = NULL; - void *prev_page_vaddr = NULL; + void *prev_zsdesc_vaddr = NULL; /* in case no free object found */ set_freeobj(zspage, (unsigned int)(-1UL)); - while (page) { - void *vaddr = kmap_atomic(page); - struct page *next_page; + while (zsdesc) { + void *vaddr = zsdesc_kmap_atomic(zsdesc); + struct zsdesc *next_zsdesc; while (off < PAGE_SIZE) { void *obj_addr = vaddr + off; /* skip allocated object */ - if (obj_allocated(page_zsdesc(page), obj_addr, &handle)) { + if (obj_allocated(zsdesc, obj_addr, &handle)) { obj_idx++; off += class->size; continue; } /* free deferred handle from reclaim attempt */ - if (obj_stores_deferred_handle(page_zsdesc(page), obj_addr, &handle)) + if (obj_stores_deferred_handle(zsdesc, obj_addr, &handle)) cache_free_handle(pool, handle); if (prev_free) @@ -2749,10 +2749,10 @@ static void restore_freelist(struct zs_pool *pool, struct size_class *class, set_freeobj(zspage, obj_idx); prev_free = (struct link_free *)vaddr + off / sizeof(*prev_free); - /* if last free object in a previous page, need to unmap */ - if (prev_page_vaddr) { - kunmap_atomic(prev_page_vaddr); - prev_page_vaddr = NULL; + /* if last free object in a previous zsdesc, need to unmap */ + if (prev_zsdesc_vaddr) { + kunmap_atomic(prev_zsdesc_vaddr); + prev_zsdesc_vaddr = NULL; } obj_idx++; @@ -2760,19 +2760,19 @@ static void restore_freelist(struct zs_pool *pool, struct size_class *class, } /* - * Handle the last (full or partial) object on this page. + * Handle the last (full or partial) object on this zsdesc. */ - next_page = get_next_page(page); - if (next_page) { - if (!prev_free || prev_page_vaddr) { + next_zsdesc = get_next_zsdesc(zsdesc); + if (next_zsdesc) { + if (!prev_free || prev_zsdesc_vaddr) { /* * There is no free object in this page, so we can safely * unmap it. */ kunmap_atomic(vaddr); } else { - /* update prev_page_vaddr since prev_free is on this page */ - prev_page_vaddr = vaddr; + /* update prev_zsdesc_vaddr since prev_free is on this zsdesc */ + prev_zsdesc_vaddr = vaddr; } } else { /* this is the last page */ if (prev_free) { @@ -2783,16 +2783,16 @@ static void restore_freelist(struct zs_pool *pool, struct size_class *class, prev_free->next = -1UL << OBJ_TAG_BITS; } - /* unmap previous page (if not done yet) */ - if (prev_page_vaddr) { - kunmap_atomic(prev_page_vaddr); - prev_page_vaddr = NULL; + /* unmap previous zsdesc (if not done yet) */ + if (prev_zsdesc_vaddr) { + kunmap_atomic(prev_zsdesc_vaddr); + prev_zsdesc_vaddr = NULL; } kunmap_atomic(vaddr); } - page = next_page; + zsdesc = next_zsdesc; off %= PAGE_SIZE; } }