From patchwork Thu Feb 27 04:35:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Senozhatsky X-Patchwork-Id: 13993746 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 B89DFC021BE for ; Thu, 27 Feb 2025 04:38:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4989A280012; Wed, 26 Feb 2025 23:38:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 448DF280005; Wed, 26 Feb 2025 23:38:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2EB73280012; Wed, 26 Feb 2025 23:38: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 0A406280005 for ; Wed, 26 Feb 2025 23:38:03 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id AA8E18022A for ; Thu, 27 Feb 2025 04:38:02 +0000 (UTC) X-FDA: 83164467204.14.F91C219 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by imf14.hostedemail.com (Postfix) with ESMTP id D059D100004 for ; Thu, 27 Feb 2025 04:38:00 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=KagGeR3K; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf14.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.176 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740631080; a=rsa-sha256; cv=none; b=tj/U2mZ4B9A+1AQsoWCMOzKy6rtPLsw6UGnR8uuwcd8X8UqfRuLzYpNpSHZjsJxqIFzdnB rDOJYxPwLYutY9Sj6mk3NEX/2CwBBWlWxJSDKWlN5BoxPG78U7DltzgmaWAY+Jt5MJ2h06 KUU28of0JsqMPGNg15c7V1XoSAAMK6k= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=KagGeR3K; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf14.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.176 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1740631080; 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=8vuEfNhU6ZAruk6qIF6JGw0mo2a915MB6BnSqH9CQes=; b=8EMG381UDF1i5bwsdkEeTZWeezfuBfIMjo5aU/T86gtnpeQudsD5X16qXjtcCem+LFR00D +kgUWsGIfVLOXzgAiqj+STPqE3vkAP8sBF3uRKPnXDvZWsw01cJRiKy91mb65hTsBNEVtB cpcJL5yYT/mQp2UkDPxHNkDlhx6Fguk= Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-222e8d07dc6so9974135ad.1 for ; Wed, 26 Feb 2025 20:38:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1740631080; x=1741235880; 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=8vuEfNhU6ZAruk6qIF6JGw0mo2a915MB6BnSqH9CQes=; b=KagGeR3KsD5EnwC29XN6SgREIEU3v0rxIVrWBwNn5+Q39XNfbSEEj5CTXwLRnaU7Wd QgDsWj6GodMwXq6dfGKQaOvugDKo7xtlrDTi0JVF4Z8KB8mGkaLgi3sYjnq/1zKkD3C5 uNbPqcLmeH3/TuzTw3G1+biz7nVEqY/pC+6/0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740631080; x=1741235880; 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=8vuEfNhU6ZAruk6qIF6JGw0mo2a915MB6BnSqH9CQes=; b=aoQasp/5tsG8rOkPWoTbUS5H4QwiE4j+BxfGoXbwpSMgbpMeJli3IgtZnQzrPwr0EG Hmot+eHpLO96iO2SsB6B5rfkbTynIJTlKQ73oUpMtbYj03aAgw4Sq12jH+K/F/OJpZNJ SwhW+cUv5PwQAy2J+oKwpZlGi6yhqWautyq9/2gkIucO/w1fXvHbqBuQ9BFCSlf0lz3g dyI4venYuxkhX/LQMFahIZwmDaoTLdb1NPSM7FlPN8qu0u/2TPM7yjZlGdpPW9pqq2mP 7/18GOrBOf6s2jUGaLH1Hf6ikKsEUQyS8wun+52YfebUDn1qD09u/ioaUWbHHdZ0kKJb IFCg== X-Forwarded-Encrypted: i=1; AJvYcCUiZ6XgZxOhzJtsxtvL0oVAWbKQR96+++I0lWzUTLcv+2Dui+v3WJMpjjXo7nETynHWdqnbdXqTXw==@kvack.org X-Gm-Message-State: AOJu0YxmYNRDnA1jxmkhK9PbIjSoRpNX9bp8e8+UbDSIHDatwiUWimcv /f7rK13DJ6DNwDYTTBry1Gy9sb4/8jyctqXw0Jtbo8P1O3kJCyHzueJ1FcO8Rg== X-Gm-Gg: ASbGncu8khOyXde1F+bhGqNKkjZc3KjgtDgyvggGYxFzXK++dakmeceTnY4ABXsIHKD iHj8Usl/y8nuWYrUMdvLmACxijGtLEz/k8sWE+qOIeBybGIcNWJh/2pYz9LbxUeQ7arhbSf2bEi fo/E8zBcgD5+hBw/RXt5xQv1Nasn2CwH0oer9MH4qeuZAsWgzP9Z2er0jSfykkvOelT0XCZQi2C vzYtO/FChKP5hMizZ0uDZiV+L4A6jhsD3ee0VDfZTSUVU9Q3b5RqK70A/YFlCjAEMeyBa6Xapzi Fyr6tP8X8pHdhNKnEgjZDU+JUpmN X-Google-Smtp-Source: AGHT+IEe2V/zeMcvZORXlCVMsgDJF6cKsc0Tcc+m2RnLoDmlcE2u9VnCp5uqjB7GRbUjo0EoaqQNIQ== X-Received: by 2002:a17:902:e752:b0:215:a303:24e9 with SMTP id d9443c01a7336-2234a1649d0mr25953335ad.3.1740631079813; Wed, 26 Feb 2025 20:37:59 -0800 (PST) Received: from localhost ([2401:fa00:8f:203:a9c0:1bc1:74e3:3e31]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-22350533a10sm4886515ad.247.2025.02.26.20.37.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Feb 2025 20:37:59 -0800 (PST) From: Sergey Senozhatsky To: Andrew Morton Cc: Yosry Ahmed , Hillf Danton , Kairui Song , Sebastian Andrzej Siewior , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: [PATCH v9 16/19] zram: permit reclaim in zstd custom allocator Date: Thu, 27 Feb 2025 13:35:34 +0900 Message-ID: <20250227043618.88380-17-senozhatsky@chromium.org> X-Mailer: git-send-email 2.48.1.658.g4767266eb4-goog In-Reply-To: <20250227043618.88380-1-senozhatsky@chromium.org> References: <20250227043618.88380-1-senozhatsky@chromium.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: D059D100004 X-Rspamd-Server: rspam12 X-Stat-Signature: gago5qsn4hftctbgufgsnwzuyn6wujrg X-HE-Tag: 1740631080-463868 X-HE-Meta: U2FsdGVkX1+YwhGm8oFu+b0Qrs3JFKbGmWOtelc/bzEzLaRVnp6ejOPIe3X4/WVLRVD2xX+dDAc8PFDXEPyYuOhowOGlPMn2YvlkPoxn37pFjMtCleEcAb2Cei7mBDU1d5o5C31ep37BwoUXw/rbTXI6KH9L7V+w1kApIaW5B4Z3DRKn2UzmSa/TQavJ/egGSITbiflp0MYtEXxXYkysfTaLON1pDIQ39TyTW0mseIvunmzfgRL5Ka2SVdfpoSZwx4y0/ath2a3O+JjqPd5W5sbglbDhwjk1+heBfkfPFppghWtbtpiKJNOCdOMNo8Qca0H27NgR6Lk4pDAkEATt7yUPSAkBRBmo4mEFsWO60HMUlBCedIxedxVmcwW9Mmx87g2e+QrGUrA3Vsuv5Ba6qI8c+9gY7U5fLAKpEE0MrA1imFPDZXcjw6am6vJ7TbVbvPbpuAR6Uw2snVeh6BTMP2syvOZWrM6itZN2rc63hpK1dFo7UUSM0O4SoZgSPPU69JEwhcb8gJhoSkv3VJif+sDbNEjOlkSWbaRecLXkxc81kKTeSK1BGId0mbiw2JmbkxSe6DBPTUe44cTZsqNYHilfALgGxNqEPN6d9ysR+bfrj9VeDc/AC5rlVQWbL5Q2Uec6A8r+IP2/2vLZJti7gg4ySyN2hA40wxukkgV+BdzdpWqt5AsDXRcoDH0RJpMHMdaS2wu3bY0h4iDY3+Hl1g93k2ZWagxG3DkaKzFpNYKDCUfSvff62TSHCQPTwW40o3YyfboJNfEl9j/PctrL3HJVgBXiPvg2UbJIgVEDN02Sk2x2b0O/rkJJdSz8fFaD0g5Pex9oCBPbHH3553fmFginOQ7Rn45amGgc+T2Q0m6eo6vObPEveFMLMoYxoxcoKkiHBCENOYY8a4G+AaRalSJRedK8wWTIyckumPu2Nis1eM94euAZ5rgWVQAdiaUtLHYnat7VnMVQ+3Ch5hN PeTpsvwP xTBL0kwDe2XvWo5EdJjEcS+MTZsS+mQV2tvsfayfaTYaxvh1e7PyLD0Wh1al1YtoUWfDyx4ujKRSuVMLprhWHd4zmoPefXWHEqhwJNZBwORU6tPXuKIv7m3lNipHkPNBbActAzybpQpqmQ+My+ZZR1dV9hCHRjj2FpiPCT9H31+vq0cE+zz986Swc0laxpv7RF9i1MYu1VWTSjFpfZ5w9FJjkCKwAn3UIZUXiurqAJ+tO1GlEoEIwbe8I6m6o8asm7KqrUZanDkd16bWMXq6faLpzEP1VVMvfIpkbK1lCShb1ClXP5tttcBJt8g== 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: 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 --- drivers/block/zram/backend_zstd.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/drivers/block/zram/backend_zstd.c b/drivers/block/zram/backend_zstd.c index 1184c0036f44..22c8067536f3 100644 --- a/drivers/block/zram/backend_zstd.c +++ b/drivers/block/zram/backend_zstd.c @@ -24,19 +24,10 @@ 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()) - 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)