<div dir="ltr"><div dir="ltr">On Tue, Oct 17, 2023 at 3:52 PM HAGIO KAZUHITO(萩尾 一仁) <<a href="mailto:k-hagio-ab@nec.com">k-hagio-ab@nec.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> ---<br>
> defs.h | 26 +++++++++++++++++++++<br>
> diskdump.c | 66 ++++++++++++++++++++++++++++++++++++++++++++----------<br>
> 2 files changed, 80 insertions(+), 12 deletions(-)<br>
> <br>
> diff --git a/defs.h b/defs.h<br>
> index 96a7a2a..2038351 100644<br>
> --- a/defs.h<br>
> +++ b/defs.h<br>
> @@ -2225,6 +2225,7 @@ struct offset_table { /* stash of commonly-used offsets */<br>
> long module_memory_base;<br>
> long module_memory_size;<br>
> long irq_data_irq;<br>
> + long zspage_huge;<br>
> };<br>
> <br>
> struct size_table { /* stash of commonly-used sizes */<br>
> @@ -7210,6 +7211,19 @@ ulong try_zram_decompress(ulonglong pte_val, unsigned char *buf, ulong len, ulon<br>
> #define SECTORS_PER_PAGE (1 << SECTORS_PER_PAGE_SHIFT)<br>
> #define ZRAM_FLAG_SHIFT (1<<24)<br>
> #define ZRAM_FLAG_SAME_BIT (1<<25)<br>
> +<br>
> +struct zram_pageflags {<br>
> + long ZRAM_LOCK;<br>
> + long ZRAM_SAME;<br>
> +};<br>
> +<br>
> +/*<br>
> + * diskdump.c<br>
> + */<br>
> +extern struct zram_pageflags zram_pageflags;<br>
> +#define ZRAM_PAGEFLAG_INIT(X, Y) (zram_pageflags.X = Y)<br>
> +#define ZRAM_PAGEFLAG_VALUE(X) (zram_pageflags.X)<br>
<br>
Thank you for the update.<br>
<br>
I don't think these macros are necessary, so simplified the patch on my <br>
end. With rethinking the names, kept "ZRAM_FLAG_SHIFT" and <br>
"ZRAM_FLAG_SAME_BIT" as they are, and made some tweaks.<br>
<br>
Guanyou and Lianbo, is this attached patch OK?<br>
<br></blockquote><div><br></div><div>The attached patch looks good to me, only two suggestions:</div><div>(I copied the following code block from the attached patch)</div><div><br></div>+static long ZRAM_FLAG_SHIFT;<br>+static long ZRAM_FLAG_SAME_BIT;</div><div class="gmail_quote"><br></div><div class="gmail_quote">The ulong is good to me.</div><div class="gmail_quote"><br>+<br> static void<br> zram_init(void)<br> {<br>+ long zram_lock;<br>+<br> MEMBER_OFFSET_INIT(zram_mempoll, "zram", "mem_pool");<br> MEMBER_OFFSET_INIT(zram_compressor, "zram", "compressor");<br> MEMBER_OFFSET_INIT(zram_table_flag, "zram_table_entry", "flags");<br> if (INVALID_MEMBER(zram_table_flag))<br> MEMBER_OFFSET_INIT(zram_table_flag, "zram_table_entry", "value");<br> STRUCT_SIZE_INIT(zram_table_entry, "zram_table_entry");<br>+ MEMBER_OFFSET_INIT(zspoll_size_class, "zs_pool", "size_class");<br>+ MEMBER_OFFSET_INIT(size_class_size, "size_class", "size");<br>+ MEMBER_OFFSET_INIT(zspage_huge, "zspage", "huge");<br>+<br>+ if (enumerator_value("ZRAM_LOCK", &zram_lock))<br>+ ZRAM_FLAG_SHIFT = 1 << zram_lock;<br>+ else if (THIS_KERNEL_VERSION >= LINUX(6,1,0))</div><div class="gmail_quote"><br></div><div class="gmail_quote">This depends on kernel version number, it might be more friendly for the distribution to output some debug info as below:</div><div class="gmail_quote"><br></div><div class="gmail_quote">if (CRASHDEBUG(1))<br></div><div class="gmail_quote"> error(INFO, "ZRAM_FLAG_SHIFT=%lu\n", ZRAM_FLAG_SHIFT);</div><div class="gmail_quote"><br></div><div class="gmail_quote">Once the related kernel patches are backported to an old kernel, the similar checking may fail. But, at least we can know a little more with the crash debug info.</div><div class="gmail_quote"><br>+ ZRAM_FLAG_SHIFT = 1 << (PAGESHIFT() + 1);<br>+ else<br>+ ZRAM_FLAG_SHIFT = 1 << 24;<br>+<br>+ ZRAM_FLAG_SAME_BIT = ZRAM_FLAG_SHIFT << 1;<br> }<br><div><br></div><div>Anyway, that is just my thoughts, you could decide if they need to be improved a bit when merging.</div><div><br></div><div>Other changes are fine to me, so: Ack.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I tested this on Linux 6.1.<br>
<br>
crash> vtop 00007fb60be00000<br>
VIRTUAL PHYSICAL<br>
7fb60be00000 (not mapped)<br>
<br>
PGD: 108e807f8 => 1107c4067<br>
PUD: 1107c46c0 => 106ec9067<br>
PMD: 106ec92f8 => 1060f2067<br>
PTE: 1060f2000 => 7fffffffdfffe0a<br>
<br>
PTE SWAP OFFSET<br>
7fffffffdfffe0a /dev/zram0 65536<br>
<br>
VMA START END FLAGS FILE<br>
ffff935206cda980 7fb60bdfe000 7fb64be00000 8100073<br>
<br>
SWAP: /dev/zram0 OFFSET: 65536<br>
<br>
crash> rd 00007fb60be00000<br>
7fb60be00000: 0000000000001000 ........<br>
<br>
(Note that it looks like Linux 6.2 and later have other changes related <br>
to zram, so this patch supports up to 6.1. We can fix them later.)<br></blockquote><div> </div><div>Ok, it's another issue.</div><div><br></div><div>Thanks.</div><div>Lianbo</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Thanks,<br>
Kazu<br></blockquote></div></div>