Message ID | 20250221093832.1949691-15-senozhatsky@chromium.org (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 85AD9C021AA for <linux-mm@archiver.kernel.org>; Fri, 21 Feb 2025 09:40:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 17DA328000D; Fri, 21 Feb 2025 04:40:04 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 12DDB28000B; Fri, 21 Feb 2025 04:40:04 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EE8B228000D; Fri, 21 Feb 2025 04:40:03 -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 D0B1828000B for <linux-mm@kvack.org>; Fri, 21 Feb 2025 04:40:03 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 89676B09B0 for <linux-mm@kvack.org>; Fri, 21 Feb 2025 09:40:03 +0000 (UTC) X-FDA: 83143455486.14.EB3FF21 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by imf03.hostedemail.com (Postfix) with ESMTP id 982FC20003 for <linux-mm@kvack.org>; Fri, 21 Feb 2025 09:40:01 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=nEX1ahKf; spf=pass (imf03.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.43 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=1740130801; 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=cvgHEnC+lRfOrRLv2RIVOYlOBk4EIx2tIzOwTFt2Qag=; b=8IokFDVkZ8zDU7aPtE102vDE4Y9nMlg04t+LXFnviNMQFrZaswHQoDyyyRBP+0CAj/QyIF binPgr3pDM/6DEuIhUwlNm9/ax/nSDgG/EHF16W050msQViHQDi5tcZr5aqt83e1YQAc/x +8YAWKIhTcl5Igowm6SI6RVVVkhrMNs= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=nEX1ahKf; spf=pass (imf03.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.216.43 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=1740130801; a=rsa-sha256; cv=none; b=nI8GuwTiOUwB7wK5ln9ZHmWODU4H2Ek9BBeqt4FuzEYyboO+kjKmx1/uoycc00HKVJcGF2 j2SjK4sXKWuTfEJ8silqw4D71Fdrum7soAK59QF8gY1tsNXtYTTM1gZEJg8vQ8NWQWmXn1 sScbhxNOAD26EPJ5FT9Um+amGvuZ0uk= Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2fc32756139so3016140a91.1 for <linux-mm@kvack.org>; Fri, 21 Feb 2025 01:40:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740130800; x=1740735600; darn=kvack.org; 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=cvgHEnC+lRfOrRLv2RIVOYlOBk4EIx2tIzOwTFt2Qag=; b=nEX1ahKfKSvOcpBtwO3DzKJ9qf2BNMuKFkoCD5kPF02Qs7NpJfvfBJ5aUpcZJVDVCF uYz6h6Zkn89qcW2bE3e74ffqsGygzoVwVIADQ/QcY5Hjhmpjsk57yUaHwDcYm6n/LtN2 OS7WL4QhbKKJN2BGCMJme/Ibka8vXBQowOMb0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740130800; x=1740735600; 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=cvgHEnC+lRfOrRLv2RIVOYlOBk4EIx2tIzOwTFt2Qag=; b=raupolVshID4YifJLM7ZvM6MEjRPK0pC9WmM7wwPjevvzTWpTHWT5CF7B9Vh6WfdmH //vR5meoHGSlKkEHmvHP0bjwCXI5JCnnYevu0pF+Xc5NuOodY5xhpYXTVlnLF6rMwaW8 LTYldVLzdxGaqvBOBDJsinQ7F5MyJGDGBw9ZDJZYjQPuUyDVzZdwymXj5wK5IkR26xPN gKWoyl4GfEKRFloxhlIFPS7tKJN4pta3PGOzTg/NDkyON9xQtFR45ypLEFO2+h982amg sJ3rTWMUT42RODMsVzxwosBdhW8jyUYypd+/RxApWZvWIl2V1RbhZZhVxhTf+iOTBoX4 gCEA== X-Forwarded-Encrypted: i=1; AJvYcCWIj9peIsMNDM32s03zb4g4D9AE+qRmd9I8ltFtJngWcM64asAxgPUSMRhPawEMxcXh+cr/93fOqw==@kvack.org X-Gm-Message-State: AOJu0YzoIBFq3f69Eh8SkvHNUNAdUFt5Us0ag+qxgtk2hdHog4bHWaTk dXYWI9at5Xj2QGF3ucAuSn95bP46uCPFv4Bu9AI2tBMpA59Pfc/69kUWd4BT4Q== X-Gm-Gg: ASbGncvJ6rcKdIr3BYom8PvNzSF82R9uYAcA7/2tmqf02H3FSksSj+W5qsPMaw5WJNA j69dH+1LJu7OymaiS2Mw5fcC9gA8B3jv49cUX6dGwEE9rxf8zXra+ucfFGg01UhUQXG8KI69/cL s8GvXZ4rTjxImzvT66ER+lUOfukuLEDVtgSlXfrse0RWi/GsTAH29pvE636Iy1QYzf6mdLqsbx/ QuWg8MKvzPL/cuOgqL649wJ1JoGLmHsKljCFm3SqUmcI0CNzmepPbWA1R2PhXzVrh79SS3+zRet jx4xs/vXnDQ3Ey5H/ugkBrG0PYg= X-Google-Smtp-Source: AGHT+IEeaNCIbiqEVAo1RmizyW1uxrb4z6DMOQbzYKHkv/Y97ooxMJdlMx5xw1SmW1HKoPKFG7FKUw== X-Received: by 2002:a17:90b:1811:b0:2ee:aed2:c15c with SMTP id 98e67ed59e1d1-2fce873aeffmr3562067a91.28.1740130800521; Fri, 21 Feb 2025 01:40:00 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:f987:e1e:3dbb:2191]) by smtp.gmail.com with UTF8SMTPSA id 98e67ed59e1d1-2fceb12dc27sm898120a91.45.2025.02.21.01.39.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 21 Feb 2025 01:40:00 -0800 (PST) From: Sergey Senozhatsky <senozhatsky@chromium.org> To: Andrew Morton <akpm@linux-foundation.org> Cc: Yosry Ahmed <yosry.ahmed@linux.dev>, Hillf Danton <hdanton@sina.com>, Kairui Song <ryncsn@gmail.com>, Sebastian Andrzej Siewior <bigeasy@linutronix.de>, Minchan Kim <minchan@kernel.org>, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky <senozhatsky@chromium.org> Subject: [PATCH v7 14/17] zram: permit reclaim in zstd custom allocator Date: Fri, 21 Feb 2025 18:38:07 +0900 Message-ID: <20250221093832.1949691-15-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.601.g30ceb7b040-goog In-Reply-To: <20250221093832.1949691-1-senozhatsky@chromium.org> References: <20250221093832.1949691-1-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 982FC20003 X-Stat-Signature: 1fn78aqs3sby4cutxpsdy5xm76iewx5p X-HE-Tag: 1740130801-43979 X-HE-Meta: U2FsdGVkX1+fO5DLkmFEP0YBclYfIQ2YcK5iO2FAKyYJ1FAjjdDSUavjrls+IWekKH3BIMTUnPLCfPWrWoc/WrUE6gg4lYrfAcyRYVno6mgmhdSMyoDX/4asJr2odK61MzmicCTKYkw30Tq5j2YFlyiZTKo0W/2XAUwfhWzwLysWiTI9i0JFbNmSZkKIjJS8VDJn+D9PMwjJNQI0onYIBIqQ0PjFWVuNp1dRJkpNniNo8zYGA7Bo/j/yirZMIanqV4i4IfDOQcKBxShpv38pl8AJUO0KFnndc/x/QWWO+RRZtsims/2CxuznnBAZQfxdVqwZDeHvsdMVXo0WIkihLUIXzoA8y8P4KJ6dqzgMFFLN+9VEI7uH650iVWlxAmxfMzAldthLDSx0yiRzmvwN5ECG/TW8KFiof29ccVHKnw2mBFJG7vPd7V9IYGHp2V8Y/GAbVFih48YD2DzMzoZeJR2NTQ8qSLaI8uTUCuHvNZ40AmXAiYWiujh+ZnyIDpXWqVoOyqyREJ0yVlOoFeAIrUZ0MexiPUr9W/rIB4GPLa4IfQnwwIRhih1Vl7VYNn1X2Tg0ZnLUunTDMqNYlb/toXx3wCxSol2NIG+9g13G5f/S4jSdfkfgu6ZC11DsAcxDNJh22wRwyF+VLDf4EOcwPIsaWG8+pVKmJQZgHP1qHX79r8RKmg48N0b7Q/yCO99+Gcyvs6j3OeYGkgjDA/8yPjED34oOJ7dQei/JTp9H4myBHPW+gwUFpELZOmAggsY76I4XtCN2acBt3WXyHcShFlLUsW4a/p5cKgOxwqs0wFDiMUy46t+IBlAOEm2LY7dIsbVIakqyOZMs6uARVYiNyVhcBTCyMh4O+2Nu7B1EMEclHzJefQDsy+vowRHC4Nwts0r5kp1xjgCcCnn40ZX6eT5b0u2th0QMxQdIG8Kfe2DyxJf5nmJaSi3r9bj785UOfiwvl2CSdLLbwdDILXQ oZvjbmmp yaYnkHTAn+UYbhOsexkJbJQT3xtQrrrbyWAULQ2/f/P84Ps4Yfju6JBkCb/H3nUnRlhpPVKgF15+Apscun9ayf2EMWN0Yw17m2P2MDoFsG67gnGIcHwoJ1ZABOTEEt46qCb4WIVHdRpaEbFXZ210qYdNmj6B/M+QWgqH+j3AGHdMIs4rjMXp6NKOj9liCIzC86Cc5YPVPouGZhxHIXC/SHlIalVSTbnfUBkvUEg2tan+McIBo3OKtsH82cf4r+biaUahlXDsu1iO02jCitEvJNnXm0aU2DLD0tNCLrRK20SBJ7VwC1f7hyYD3YiNvSOMIVDFo X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: <linux-mm.kvack.org> List-Subscribe: <mailto:majordomo@kvack.org> List-Unsubscribe: <mailto:majordomo@kvack.org> |
Series |
zsmalloc/zram: there be preemption
|
expand
|
diff --git a/drivers/block/zram/backend_zstd.c b/drivers/block/zram/backend_zstd.c index 1184c0036f44..53431251ea62 100644 --- a/drivers/block/zram/backend_zstd.c +++ b/drivers/block/zram/backend_zstd.c @@ -24,19 +24,14 @@ struct zstd_params { /* * For C/D dictionaries we need to provide zstd with zstd_custom_mem, * which zstd uses internally to allocate/free memory when needed. - * - * This means that allocator.customAlloc() can be called from zcomp_compress() - * under local-lock (per-CPU compression stream), in which case we must use - * GFP_ATOMIC. - * - * Another complication here is that we can be configured as a swap device. */ static void *zstd_custom_alloc(void *opaque, size_t size) { - if (!preemptible()) + /* Technically this should not happen */ + if (WARN_ON_ONCE(!preemptible())) return kvzalloc(size, GFP_ATOMIC); - return kvzalloc(size, __GFP_KSWAPD_RECLAIM | __GFP_NOWARN); + return kvzalloc(size, GFP_NOIO | __GFP_NOWARN); } static void zstd_custom_free(void *opaque, void *address)
When configured with pre-trained compression/decompression dictionary support, zstd requires custom memory allocator, which it calls internally from compression()/decompression() routines. That means allocation from atomic context (either under entry spin-lock, or per-CPU local-lock or both). Now, with non-atomic zram read()/write(), those limitations are relaxed and we can allow direct and indirect reclaim. Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> --- drivers/block/zram/backend_zstd.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)