Message ID | 20250214045208.1388854-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 831F3C021A4 for <linux-mm@archiver.kernel.org>; Fri, 14 Feb 2025 04:53:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 207B76B00A8; Thu, 13 Feb 2025 23:53:49 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 191EF6B00A9; Thu, 13 Feb 2025 23:53:49 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 00BC9280001; Thu, 13 Feb 2025 23:53:48 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id D344F6B00A8 for <linux-mm@kvack.org>; Thu, 13 Feb 2025 23:53:48 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7AF38C1D68 for <linux-mm@kvack.org>; Fri, 14 Feb 2025 04:53:48 +0000 (UTC) X-FDA: 83117332536.06.115CF28 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by imf06.hostedemail.com (Postfix) with ESMTP id 82DAA18000D for <linux-mm@kvack.org>; Fri, 14 Feb 2025 04:53:46 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=OCWfwOGJ; spf=pass (imf06.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.179 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=1739508826; 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=kipk8ZhRcUhrMlY6gqbAy1JwWiYimC0berXd0xxzQWdYWqVh9ML9KORYLfNa1usotIhG+m LiUBk3SHyGGGhc3I36rpP+NjSeSU6PftGLoz3qeZVuoEoAL3sk2iWleLYJgujDvzuSuWv9 0tSgWXJVVJYU8tO/90Q7d0yMTeQiczw= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=OCWfwOGJ; spf=pass (imf06.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.179 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=1739508826; a=rsa-sha256; cv=none; b=rkR6OApFpmpB23S0LS9pbPRoHPtc1CMKjkDAqtl1usZDLFlGXnpX2XnJpPUGBmfA7+h6KY 35tcBHsmOmMAM9Mgw6w7doHZNyZWpUk58RseKpim1/O3KoS/n+s0g4ZWtSKzW3KHM4RFKN JGppItMJeZ+VEDOn8spXa0JW1K2/WO4= Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-21f3c119fe6so39161805ad.0 for <linux-mm@kvack.org>; Thu, 13 Feb 2025 20:53:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1739508825; x=1740113625; 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=OCWfwOGJKwS2N4k4f9N+YWzXPjwbiCMCQNpst4mCKe26Y/v+Q7f6hsfiLm3EacoaCh TnXLtxY/OKS1jPBS4eojVmpcCUa37YjeP7ARVHrrTFGjMXxUach6mNX9bL4tJq9r4End VFQl4wE6PtqXjTFBAmAfjmYcyUFjG9RxXTDEI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739508825; x=1740113625; 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=XlzePVZ/L8cbXjKGIZM99zxkR5DKQka3WuYpnFGFSg1fKdvRhO61RiqXEOhtDQ3ruO MBDy5VtI71EatMjJedh2+BSg5oPtsbg+jNZnaIWudnTiw7mU4VQtOg2LzquulajIPr2b NqKWu993uLxpLD+vC77hHNCzUbS+Uh8ZzStFIUp6JNpJ+Hh2A4+QgiYxYX6AfNcJjTfX umK/f3FOydzHIBaXdyEG9pI3/InBfPW110M3iPuJdRaYq7Olvj28ApqssGVjUyz7Er2D 3W23oIT7c7KtjsMaQOSpEaafUczUiPxs3rTXOfzstgljOo2LAOHynHd2rPHRSeG7xQ54 6B1A== X-Forwarded-Encrypted: i=1; AJvYcCUYfJzF6O+tduXkdpmrcebSbEMfalHlNYXJvYmk58OHm2DuUptiv8TKqKX2MY5lBuUbkMU4cBwrYQ==@kvack.org X-Gm-Message-State: AOJu0YzZuiCEQiDphSWFlpc1nRi+YClkMFj/VTD9Ztz4COuIR74WcZsO IvJc5YBWtwPHmqazQJgBpA3z27TF2Ve4zyfT6M1rKd+9wk+0i3vUb9DXltLt5w== X-Gm-Gg: ASbGncu7VD82Uv9GV9LT1vGKImCrZpJnCVU5F7pVBlqFXR8aMXf0kRYeRUx8Ui0e952 1KNey/t15HEzO5/cjAVY1/ZWv0I3bdTLOQyVpdpvAdKYoL2hvUQ+ExdIFvwpG/M69uMFxuBLBxf F0lZxCNJMrIGsGUHGJobqHdbOhOgsl3n1pJe1eesXYtVTdxLw+YQGuidgJSM39336njlnQiDA9Q 3TMdZRs99W9s6IzU74NiOARReHCG1KuCwI8t2hyoMnWmFPZzv2TDLuRlhs5nyn0PGrCqm/ojHnq i0Q1TxIIXGNdO1yvGQ== X-Google-Smtp-Source: AGHT+IFtBGqgz6iEWt7LMNhyXXy7Ao2/LISUPvugqZVTStAhfwtsv9UYgCngz+ynDyppB1uJogIN/g== X-Received: by 2002:a05:6a21:6d85:b0:1ee:85b2:ef73 with SMTP id adf61e73a8af0-1ee85b2efcemr458480637.34.1739508825453; Thu, 13 Feb 2025 20:53:45 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:942d:9291:22aa:8126]) by smtp.gmail.com with UTF8SMTPSA id 41be03b00d2f7-adb5a92c6d8sm2017586a12.65.2025.02.13.20.53.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 13 Feb 2025 20:53:45 -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>, Minchan Kim <minchan@kernel.org>, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky <senozhatsky@chromium.org> Subject: [PATCH v6 14/17] zram: permit reclaim in zstd custom allocator Date: Fri, 14 Feb 2025 13:50:26 +0900 Message-ID: <20250214045208.1388854-15-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.601.g30ceb7b040-goog In-Reply-To: <20250214045208.1388854-1-senozhatsky@chromium.org> References: <20250214045208.1388854-1-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 82DAA18000D X-Stat-Signature: 1knj44rbzjn6yriem94brnojxcjj4p3k X-HE-Tag: 1739508826-396217 X-HE-Meta: U2FsdGVkX1/drRGpfUa0wj4c18p3I5AVOtlQ3yQeUO4vz7pslSlr5Z+EdJdTqNuEo3Z33E6dRvLCY8+1mc1b7AECE9Lm/ikHW7Vcj8hsbgivAWkuxbzzUuzZyi+JHEGUnifKKyQfnEcyrEJlNmkAcX9xPVIzLh2fnKEXVLmzJZb+IHEsL0fYvLga9a1MwGQvAu6hHky8BztQiMTnT3t4Uo3PuueSFJyjju+FECGi9Afcx7ubQ3kYS86xkqMe4HftLPIa8PVtJWj7tGHATV4AoZo2Lo8/Ys5Xp9k3k9T1CGq5JeijoBXBzE890H7HG8YHE1n7Ld6B6Djw4M611QC561vRjB3WuJgtA+ui4R8/yHpYNordrpThIh4Y9g4/EIuHDBa9GywBLnH+CTONHJwz2ne2a03HsxIysS0n9JMFhgMaFqRXUtzg5gE7d82Nn4G5xiM+po7A3b9Rogv7/Kheqpf3QXREE3wNX7fF0C5q55n2Mh5t0Y0F2po3J5gHd6LxGkM3Ti/4TSVFBQKd7k2G9xfCzEnlf5eCG/yMnb4FEkNaPB9sfEK8tsprV47qKvrT4fMOiToijaDzdmkNyOiuUCstp5aSMn0yIdt73mYWKY1/EWvp6tSx0XoudIV1jf1ljkIbhzngtvfRcVYu0F8SOhgSr4EaUsV+5tAiwoMuX0QAAUBJOuL9PEbSSGnaPnvPfAJ5mSSaI7J2RlwkpBobU/UVj1t/BeczXH/Drt9avNJsCHPhUhgWbJZpwYrf1ZcE5OcXkxTVgKVtd4xGyF9p6D+vHdBgkER6Bcm/osbDb7G0Lft0mKbIe+XA0lqPc/OVl2kCfwV5Ah5K2ZrRYOTl1iI1Et74xiluDtHl6khtVmS48P8gEUAwkXIJYL59t5clTjNEpcZevy2sS7K7r7+i8gnZJtJuk1p4x4w+eIXt3bUFi4CYzI0SxpL8t3rSb0lBSoHaDoT23Kw0D32tjwc t1UG9jGK K2OiNXC1/TnQWw8IjMkzV19maFD7DpUdW3y3yJ+izPbx3+uix3y8WEr3NUGmaxU2fILqm/eCOMiMUpxKV46f/gDB4LMaV2UGGvc4umnYTINk89ycUI/skAcQ5uXnGRA/ev9zLmhdvZAmm3lhUfymDqPE002xgW9QbeMDp04eLO375YxikfdlOJwvZd3IXK0G6Lqz5+rs2MCIc3Oq3c9sH1Wp/+OwILUMiwDZqk5ttw8nlcbKv5FPVVVNhg0kVgdR6VOxAjq/DMsFddr9uvtmolv+HrTgt8m0nklx/0ZXV3C9BkQGyKlAE/1gnkg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, 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(-)