Commit b4444a84 authored by Sergey Senozhatsky's avatar Sergey Senozhatsky Committed by Andrew Morton
Browse files

zram: remove entry element member

Element is in the same anon union as handle and hence holds the same
value, which makes code below sort of confusing

    handle = zram_get_handle()
    if (!handle)
	element = zram_get_element()

Element doesn't really simplify the code, let's just remove it.  We
already re-purpose handle to store the block id a written back page.

Link: https://lkml.kernel.org/r/20241218063513.297475-3-senozhatsky@chromium.org


Signed-off-by: default avatarSergey Senozhatsky <senozhatsky@chromium.org>
Cc: Minchan Kim <minchan@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 71268035
Loading
Loading
Loading
Loading
+5 −18
Original line number Diff line number Diff line
@@ -112,17 +112,6 @@ static void zram_clear_flag(struct zram *zram, u32 index,
	zram->table[index].flags &= ~BIT(flag);
}

static inline void zram_set_element(struct zram *zram, u32 index,
			unsigned long element)
{
	zram->table[index].element = element;
}

static unsigned long zram_get_element(struct zram *zram, u32 index)
{
	return zram->table[index].element;
}

static size_t zram_get_obj_size(struct zram *zram, u32 index)
{
	return zram->table[index].flags & (BIT(ZRAM_FLAG_SHIFT) - 1);
@@ -879,7 +868,7 @@ static ssize_t writeback_store(struct device *dev,

		zram_free_page(zram, index);
		zram_set_flag(zram, index, ZRAM_WB);
		zram_set_element(zram, index, blk_idx);
		zram_set_handle(zram, index, blk_idx);
		blk_idx = 0;
		atomic64_inc(&zram->stats.pages_stored);
		spin_lock(&zram->wb_limit_lock);
@@ -1505,7 +1494,7 @@ static void zram_free_page(struct zram *zram, size_t index)

	if (zram_test_flag(zram, index, ZRAM_WB)) {
		zram_clear_flag(zram, index, ZRAM_WB);
		free_block_bdev(zram, zram_get_element(zram, index));
		free_block_bdev(zram, zram_get_handle(zram, index));
		goto out;
	}

@@ -1549,12 +1538,10 @@ static int zram_read_from_zspool(struct zram *zram, struct page *page,

	handle = zram_get_handle(zram, index);
	if (!handle || zram_test_flag(zram, index, ZRAM_SAME)) {
		unsigned long value;
		void *mem;

		value = handle ? zram_get_element(zram, index) : 0;
		mem = kmap_local_page(page);
		zram_fill_page(mem, PAGE_SIZE, value);
		zram_fill_page(mem, PAGE_SIZE, handle);
		kunmap_local(mem);
		return 0;
	}
@@ -1600,7 +1587,7 @@ static int zram_read_page(struct zram *zram, struct page *page, u32 index,
		 */
		zram_slot_unlock(zram, index);

		ret = read_from_bdev(zram, page, zram_get_element(zram, index),
		ret = read_from_bdev(zram, page, zram_get_handle(zram, index),
				     parent);
	}

@@ -1751,7 +1738,7 @@ static int zram_write_page(struct zram *zram, struct page *page, u32 index)

	if (flags) {
		zram_set_flag(zram, index, flags);
		zram_set_element(zram, index, element);
		zram_set_handle(zram, index, element);
	}  else {
		zram_set_handle(zram, index, handle);
		zram_set_obj_size(zram, index, comp_len);
+1 −4
Original line number Diff line number Diff line
@@ -62,10 +62,7 @@ enum zram_pageflags {

/* Allocated for each disk page */
struct zram_table_entry {
	union {
	unsigned long handle;
		unsigned long element;
	};
	unsigned int flags;
	spinlock_t lock;
#ifdef CONFIG_ZRAM_TRACK_ENTRY_ACTIME