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 BCB15C4332F for ; Thu, 17 Nov 2022 16:38:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AB6226B0078; Thu, 17 Nov 2022 11:38:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A3E006B007B; Thu, 17 Nov 2022 11:38:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8B7CC6B007D; Thu, 17 Nov 2022 11:38:48 -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 7B7176B0078 for ; Thu, 17 Nov 2022 11:38:48 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 2E995ABAC0 for ; Thu, 17 Nov 2022 16:38:48 +0000 (UTC) X-FDA: 80143493136.07.EACA88B Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by imf30.hostedemail.com (Postfix) with ESMTP id B49ED80008 for ; Thu, 17 Nov 2022 16:38:47 +0000 (UTC) Received: by mail-pj1-f44.google.com with SMTP id o7so2132484pjj.1 for ; Thu, 17 Nov 2022 08:38:47 -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=8Nqg4Xt8lGKthWB+nE04XmQsPpZUs65jb+qHOq4Cr/k=; b=PRXwfJiPmdnJffoazkBjUBN8ZE3gBH/hkNy/65kEe1ygSQwxKpmoEIjZkvNBkBd3d4 UAcN7kr2yQiixORgoPBvpXxN27IMZ+QOmLa8coD8Fa9cMn2Khspr0MSgul60p0CoPc9S V+hm8qNojAxVS77NWN/UxmzX/5B2ujehMRzWW57FsYBMYCh65oPMx5O2EkKMzdJq8OIs wz9RkshLbCfjuOFy8mofp+9SYbllP0P65SoImEnn29027zUuKntQn2uac4eQxrdzBN7W n57wczZSCztTlEVXxl8d3ExlLHHiz5qAxdv8Y9hE3J/YV9vEgMNrMQKQ3YdiJzgniV/Z VWpw== 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=8Nqg4Xt8lGKthWB+nE04XmQsPpZUs65jb+qHOq4Cr/k=; b=w1Cw45zQ9/b4Zi11yEeGJ+1zRWygkAlFtI7V66h/ISkFlBG1qRYR/gCp8MRqxA+kLi 1B0gRgayurCuErlreZv1mH9lZXBIBHd1jIwGVNz8iWztgXuMOp4v89JlNcv7aS/jI70+ 6ODIrT0qOerX2fexZB/3dIXcOc9twSL7DDgMuIBBG3Oc86kacS0zw1lmiblpXxT9NySQ 3B7lyV1GxRV3HE2PUapUa6CD7jQqTz33QcH5jCx3SFNJg56KaDrHD1oAyncwrk5/KPUq 0ojtZg084K8lV0d2zqEm0BAHHmDnV4Q1rda9s8GR1ooUk7SR10+7MochKMnIAHW0vC1+ hzTQ== X-Gm-Message-State: ANoB5pkZ9kNUoX3jf5LaQU4DdMTkjqVNNExdMMrBU1ukFSGPtScXDXJf IAEH1muAFF3si6sJ0D8rcTA= X-Google-Smtp-Source: AA0mqf44KzoNad4Ffghvr1rp79PUpUhzA6ssZf3/8UcqNZf9nc9k7+WSrqnu8RxDJ2OxLOuAnvhU0g== X-Received: by 2002:a17:90a:bc4b:b0:212:d796:d30f with SMTP id t11-20020a17090abc4b00b00212d796d30fmr3699709pjv.9.1668703126784; Thu, 17 Nov 2022 08:38:46 -0800 (PST) Received: from localhost (fwdproxy-prn-001.fbsv.net. [2a03:2880:ff:1::face:b00c]) by smtp.gmail.com with ESMTPSA id y4-20020a17090322c400b0016f196209c9sm1645420plg.123.2022.11.17.08.38.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Nov 2022 08:38:46 -0800 (PST) From: Nhat Pham To: akpm@linux-foundation.org Cc: hannes@cmpxchg.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, minchan@kernel.org, ngupta@vflare.org, senozhatsky@chromium.org, sjenning@redhat.com, ddstreet@ieee.org, vitaly.wool@konsulko.com Subject: [PATCH v4 4/5] zsmalloc: Add ops fields to zs_pool to store evict handlers Date: Thu, 17 Nov 2022 08:38:38 -0800 Message-Id: <20221117163839.230900-5-nphamcs@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221117163839.230900-1-nphamcs@gmail.com> References: <20221117163839.230900-1-nphamcs@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1668703127; 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=8Nqg4Xt8lGKthWB+nE04XmQsPpZUs65jb+qHOq4Cr/k=; b=m8wif+SHBlMVS/2VbEIF+IzLOY/wdZGg0VpI6cKdXYXM1+UYECBMrsePh1NL/IM7twchVw smkOWGzo1z4VMfgsKaI160wJH5aMC5Hw3qdQRlgH5QcQ8voAKdTmfl77e0Y6hyByXzXcuK +dR0ez39SfpMhuCDac2a9qPHu1ZZ9fY= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=PRXwfJiP; spf=pass (imf30.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.216.44 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1668703127; a=rsa-sha256; cv=none; b=yW2AMgHfz62EGKlfSyE14mhzu/rJuaeqzN2kMNAiC9uvJIHkPiTgZABYED9AWS6ny14L4Q G24tJFpi6VwmSBbeGCpfPHiXmU65uMPh+Z7i2nr1Z0mXP5zcwtN3Q6oDzFnujjkMQOe+G1 Z9UZ8s/LvHrXadfDVvc7aQtcrYPKC9w= X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: B49ED80008 Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=PRXwfJiP; spf=pass (imf30.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.216.44 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Stat-Signature: s5ebz74iut51mobjm4x7kgh8qszhmpcx X-HE-Tag: 1668703127-193490 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: This adds fields to zs_pool to store evict handlers for writeback, analogous to the zbud allocator. Signed-off-by: Nhat Pham --- mm/zsmalloc.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 2557b55ec767..776d0e15a401 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -225,6 +225,12 @@ struct link_free { }; }; +struct zs_pool; + +struct zs_ops { + int (*evict)(struct zs_pool *pool, unsigned long handle); +}; + struct zs_pool { const char *name; @@ -242,6 +248,9 @@ struct zs_pool { #ifdef CONFIG_ZPOOL /* List tracking the zspages in LRU order by most recently added object */ struct list_head lru; + const struct zs_ops *ops; + struct zpool *zpool; + const struct zpool_ops *zpool_ops; #endif #ifdef CONFIG_ZSMALLOC_STAT @@ -385,6 +394,18 @@ static void record_obj(unsigned long handle, unsigned long obj) #ifdef CONFIG_ZPOOL +static int zs_zpool_evict(struct zs_pool *pool, unsigned long handle) +{ + if (pool->zpool && pool->zpool_ops && pool->zpool_ops->evict) + return pool->zpool_ops->evict(pool->zpool, handle); + else + return -ENOENT; +} + +static const struct zs_ops zs_zpool_ops = { + .evict = zs_zpool_evict +}; + static void *zs_zpool_create(const char *name, gfp_t gfp, const struct zpool_ops *zpool_ops, struct zpool *zpool) @@ -394,7 +415,19 @@ static void *zs_zpool_create(const char *name, gfp_t gfp, * different contexts and its caller must provide a valid * gfp mask. */ - return zs_create_pool(name); + struct zs_pool *pool = zs_create_pool(name); + + if (pool) { + pool->zpool = zpool; + pool->zpool_ops = zpool_ops; + + if (zpool_ops) + pool->ops = &zs_zpool_ops; + else + pool->ops = NULL; + } + + return pool; } static void zs_zpool_destroy(void *pool) -- 2.30.2