From nobody Tue Feb 10 16:22:04 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E0351283C93 for ; Tue, 10 Feb 2026 03:51:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770695503; cv=none; b=EEz9UjTHqPj7+eMvTYQ1k2xjnuHPh34z73i4MgGtYcvAGJQMTg67wNY9F8ZnWms3aqYM7h9EY02s2JATCZzZ4hGK3gMsn1T7Fgoy0nMq14E5gvWCzwMtA7WyaVJ/DTYNs0gTwdmhhTh+jr0XarPS/hiA1ssavs68NQW6VbjxUv8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770695503; c=relaxed/simple; bh=xngDvGsGosuy02NazjVqvK35O1orHk+G2QwT3iWYfkU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=OR/P70qnNzD8WnKfBY3x4FMTwsD9ERTo+ATs+VJGCiZG1FqCszgOpwU5aWhdZTxgh9ofnwqnBJtPcre3SXfHhvndhzVoFCzP+sE8j6cPjJTEVU4mGajcLBJ7bHS8iOf3J3tUk3XeABxXyUj3mctL9Iybjnb9rXXDAV/juWURRs0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=XJug/nBm; arc=none smtp.client-ip=209.85.216.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="XJug/nBm" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-352f60d6c2fso2506064a91.1 for ; Mon, 09 Feb 2026 19:51:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1770695500; x=1771300300; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=oWBrWovJfp5dTcCCQ+5p+inQe0fMxZzVyOmIoUXcNY4=; b=XJug/nBm4kMqwESjVhpzY2V2Ow3L+OTQYYdhfX3mOM0IzcfSYCdgzfgqBT9LOAzrfs AMc6XhqDkHEHW/DN/Pd3ejNjeGCIA2OwfAbd+6gUTDf39+N5bTZ66jYJRZ5prVRi0bUa mh0E9XlqkAs7PP2GeWXZs/R0oDcpNhGrrmyec= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770695500; x=1771300300; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=oWBrWovJfp5dTcCCQ+5p+inQe0fMxZzVyOmIoUXcNY4=; b=YQt+r2zy05Re8xB/H8CXcx80hQd4r8V1QTFlFNfZtwwjbR8IPmyNUABttVf8OKxuyE 1GC2rTxIMYKwTjD2UrH5UR1LCDmDZQ4b6Pr17OCtfGfAoCpiVqVhBSxjVi+RJZpRFenY Scpr8EIBOaPYqw95UHN3zbWe7D4rXD+Y05pMQq4IHhspRKQC8rTEJPQZkd7YMxjFknn0 6BznqOd/HXg1i7yADP4DyXijImmoQASGWH/Ls0tsme3pFkU+vkOj8rtyaHDf02q1SUGv Cf4tE1PrhtrhETfT+CMHdy4bAPaJF4PT2LSRG+RAgzSCWeEKshAzm+JiMAb2shaxNoJS mv/g== X-Forwarded-Encrypted: i=1; AJvYcCXQdEdk8qyypAQESkQGf6waqqdpqSb7qTjXT8twEXaM/ApTtkQkoC/T+KmDtw6HPjLW36P5WIRPq81jvhQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4tE1QfZl/MMaq182imEOZH3vp3bkXlf0XGHqrL4TYEsDsSjpa iQbsDpWEqob2BvuIifcmNmwbXKTTuBB/htx4KhcCMeNJAd1V5iMd9uCSsv8ZDmuJs7sDVbC82H6 BWxs= X-Gm-Gg: AZuq6aKfhnLnz9fl+C67FmVfTTIclzv4KHh7rnrHN6XJ7vUOwuaUk1XQLLyZtx48yms 5iOt+rb+t6+B6FcCD4nmMkjy1ZbQv3MwxHxiDQaqp8h3EimmAxwKzNhSjYk8/UiB1OhRmgC0mRQ 0H34xZRBYy3gtK0tzidAbUVRJfJ+g7K6MjqstEOLF3IKghlAB5GSpjUmdK/zugQcwtXtKQxUkZ+ i91t/siaIECN6DBZI2lnljpH7yJhBZCTSB5Wlct6VZoY1lklmZtrmBRv18o6dooj4efehiZKuuH 5M2nERHmaj8r1RNm4tVg5Gea/yMt2O07LHAj7kPI/+0zvBeINUz0Wgj7Xr/XDfIofcnihqCNrH+ XbG/3d1aaf+6ritk/kdcGYfDurI/DyRaiEVzjx5dkVHa+UTuF6NHK5i24zxE4W9NM7MJ84EwQ3X Z8pbAiUre+gzW/pbY4B5+L2UEdCel7FMvXTO1LJFpjee/cr+yyN4WAuZ5dkGG8JSR9ED9zQ2kNr u6IkC02Bac= X-Received: by 2002:a17:902:d48a:b0:2a7:51b3:859c with SMTP id d9443c01a7336-2a9519b5a9fmr127587185ad.57.1770695500190; Mon, 09 Feb 2026 19:51:40 -0800 (PST) Received: from tigerii.tok.corp.google.com ([2a00:79e0:2031:6:3f6:92b2:887b:120]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2aadeb4d345sm65979895ad.54.2026.02.09.19.51.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Feb 2026 19:51:39 -0800 (PST) From: Sergey Senozhatsky To: Andrew Morton Cc: Minchan Kim , Brian Geffon , Jens Axboe , linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, Sergey Senozhatsky , Richard Chang , David Stevens Subject: [PATCH] zram: drop slot trylock and miss_free Date: Tue, 10 Feb 2026 12:50:37 +0900 Message-ID: <20260210035045.3817297-1-senozhatsky@chromium.org> X-Mailer: git-send-email 2.53.0.239.g8d8fc8a987-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Commit e914d8f00391 ("mm: fix unexpected zeroed page mapping with zram swap") removed swap_slot_free_notify() calls from end_io callbacks. This means that there is no more slot_free_notify() from IRQ context and hence slot-free cannot deadlock on slot lock any more. Drop slot trylock. Suggested-by: Richard Chang Suggested-by: David Stevens Signed-off-by: Sergey Senozhatsky --- drivers/block/zram/zram_drv.c | 34 +++------------------------------- drivers/block/zram/zram_drv.h | 1 - 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index 61d3e2c74901..c2894023c0cd 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -74,23 +74,7 @@ static void slot_lock_init(struct zram *zram, u32 index) * 2) lock() function can sleep waiting for the lock * * 3) Lock owner can sleep - * - * 4) Use TRY lock variant when in atomic context - * - must check return value and handle locking failers */ -static __must_check bool slot_trylock(struct zram *zram, u32 index) -{ - unsigned long *lock =3D &zram->table[index].__lock; - - if (!test_and_set_bit_lock(ZRAM_ENTRY_LOCK, lock)) { - mutex_acquire(slot_dep_map(zram, index), 0, 1, _RET_IP_); - lock_acquired(slot_dep_map(zram, index), _RET_IP_); - return true; - } - - return false; -} - static void slot_lock(struct zram *zram, u32 index) { unsigned long *lock =3D &zram->table[index].__lock; @@ -1943,15 +1927,9 @@ static ssize_t debug_stat_show(struct device *dev, { int version =3D 1; struct zram *zram =3D dev_to_zram(dev); - ssize_t ret; =20 guard(rwsem_read)(&zram->dev_lock); - ret =3D sysfs_emit(buf, - "version: %d\n0 %8llu\n", - version, - (u64)atomic64_read(&zram->stats.miss_free)); - - return ret; + return sysfs_emit(buf, "version: %d\n0 0\n", version); } =20 static void zram_meta_free(struct zram *zram, u64 disksize) @@ -2814,16 +2792,10 @@ static void zram_submit_bio(struct bio *bio) static void zram_slot_free_notify(struct block_device *bdev, unsigned long index) { - struct zram *zram; - - zram =3D bdev->bd_disk->private_data; + struct zram *zram =3D bdev->bd_disk->private_data; =20 atomic64_inc(&zram->stats.notify_free); - if (!slot_trylock(zram, index)) { - atomic64_inc(&zram->stats.miss_free); - return; - } - + slot_lock(zram, index); slot_free(zram, index); slot_unlock(zram, index); } diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h index 515a72d9c06f..d90d9b6c9575 100644 --- a/drivers/block/zram/zram_drv.h +++ b/drivers/block/zram/zram_drv.h @@ -87,7 +87,6 @@ struct zram_stats { atomic64_t huge_pages_since; /* no. of huge pages since zram set up */ atomic64_t pages_stored; /* no. of pages currently stored */ atomic_long_t max_used_pages; /* no. of maximum pages stored */ - atomic64_t miss_free; /* no. of missed free */ #ifdef CONFIG_ZRAM_WRITEBACK atomic64_t bd_count; /* no. of pages in backing device */ atomic64_t bd_reads; /* no. of reads from backing device */ --=20 2.53.0.239.g8d8fc8a987-goog