<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>