[PATCH v7 04/15] zram: move mark_slot_accessed() under existing slot lock sections
From: Sergey Senozhatsky
Date: Sat Oct 24 2026 - 22:23:18 EST
zram_bio_read() and zram_bio_write() take slot lock just to
mark_slot_accessed(), right after zram_read_page() and
zram_write_page() have already taken and released it. Move
mark_slot_accessed() into those existing slot lock read/write
sections.
Signed-off-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx>
---
drivers/block/zram/zram_drv.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 0e1aa0da11aa..2affac25db5d 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -2188,6 +2188,7 @@ static int zram_read_page(struct zram *zram, struct page *page,
int ret;
slot_lock(zram, index);
+ mark_slot_accessed(zram, index);
if (!test_slot_flag(zram, index, ZRAM_WB)) {
/* Slot should be locked through out the function call */
ret = read_from_zspool(zram, page, index);
@@ -2244,6 +2245,7 @@ static int write_same_filled_page(struct zram *zram, unsigned long fill,
slot_free(zram, index);
set_slot_flag(zram, index, ZRAM_SAME);
set_slot_handle(zram, index, fill);
+ mark_slot_accessed(zram, index);
slot_unlock(zram, index);
atomic64_inc(&zram->stats.same_pages);
@@ -2283,6 +2285,7 @@ static int write_incompressible_page(struct zram *zram, struct page *page,
set_slot_flag(zram, index, ZRAM_HUGE);
set_slot_handle(zram, index, handle);
set_slot_size(zram, index, PAGE_SIZE);
+ mark_slot_accessed(zram, index);
slot_unlock(zram, index);
atomic64_add(PAGE_SIZE, &zram->stats.compr_data_size);
@@ -2348,6 +2351,7 @@ static int zram_write_page(struct zram *zram, struct page *page,
slot_free(zram, index);
set_slot_handle(zram, index, handle);
set_slot_size(zram, index, comp_len);
+ mark_slot_accessed(zram, index);
slot_unlock(zram, index);
/* Update stats */
@@ -2756,10 +2760,6 @@ static void zram_bio_read(struct zram *zram, struct bio *bio)
}
flush_dcache_page(bv.bv_page);
- slot_lock(zram, index);
- mark_slot_accessed(zram, index);
- slot_unlock(zram, index);
-
bio_advance_iter_single(bio, &iter, bv.bv_len);
} while (iter.bi_size);
@@ -2786,10 +2786,6 @@ static void zram_bio_write(struct zram *zram, struct bio *bio)
break;
}
- slot_lock(zram, index);
- mark_slot_accessed(zram, index);
- slot_unlock(zram, index);
-
bio_advance_iter_single(bio, &iter, bv.bv_len);
} while (iter.bi_size);
--
2.56.0.257.gf7497c7d27-goog