[Crash-utility] 答复: [External Mail]Re: zram decompress support for gcore/crash-utility

赵乾利 zhaoqianli at xiaomi.com
Sat Apr 4 14:13:09 UTC 2020


patch update
Found a better way translate pfn to page,PTOB.
Besides,fix a issue with low probability of decompression failure

________________________________________
From: 赵乾利
Sent: Saturday, April 4, 2020 14:46
To: Dave Anderson
Cc: d hatayama; Discussion list for crash utility usage, maintenance and development
Subject: Re: 答复: [External Mail]Re: [Crash-utility] zram decompress support for gcore/crash-utility

Hi,Dave

As you suggestion,i have made changes.
Calling pfn_to_map to get page address was a wrong use,it just work in SPARSEMEM
I'm looking for a interface like pfn_to_page,so i found two ways
1.pfn_to_map seems to work,and i didn't notice SPARSEMEM restriction
2.Combining pfn_to_phys and phy_to_page,but pfn_to_phys defined as a static function
i wrote this feature in gcore-command before,pfn_to_map not defined as static,so i can call directly....

Now,I use the following code to implement,this should work
+       phys_to_page((obj >> OBJ_INDEX_BITS) << PAGESHIFT(), &page);


Thanks

________________________________________
From: Dave Anderson <anderson at redhat.com>
Sent: Saturday, April 4, 2020 4:14
To: 赵乾利
Cc: d hatayama; Discussion list for crash utility usage, maintenance and development
Subject: Re: 答复: [External Mail]Re: [Crash-utility] zram decompress support for gcore/crash-utility

----- Original Message -----
> Hi,Dave
>
> As per your suggestion, I updated the patch,and compiled successfully on
> arm64, x86,ppc64 architecture
>

The patch does compile cleanly, although I haven't tried compiling it on an s390x, but
I'll do that soon.

A couple issues with the patch:

  +               if (!strncmp(name, "lzo", strlen("lzo"))) {
  +                       lzo_init();
  +                       decompressor = (void *)lzo1x_decompress_safe;
  +               } else {//todo,support more compressor
  +                       error(WARNING, "Only support lzo compressor\n");
  +                       return 0;
  +               }

lzo_init() will have already been called by is_diskdump() here during session
initialization if the dumpfile is a compressed kdump:

  #ifdef LZO
          if (lzo_init() == LZO_E_OK)
                  dd->flags |= LZO_SUPPORTED;
  #endif

So try_zram_decompress() should check if (dd->flags & LZO_SUPPORTED) has been set before
calling lzo_init() again.

And while I don't object to exporting swap_info_init(), I do have a problem with pfn_to_map():

  +void swap_info_init(void);
  +ulong pfn_to_map(ulong);

  ...

  +       obj >>= OBJ_TAG_BITS;
  +       page = pfn_to_map(obj >> OBJ_INDEX_BITS);
  +       obj_idx = (obj & OBJ_INDEX_MASK);

The pfn_to_map() function is only relevant if the kernel is configured with SPARSEMEM.
I don't see why the exported phys_to_page() function could not be used here?

Thanks,
  Dave

#/******本邮件及其附件含有小米公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件! This e-mail and its attachments contain confidential information from XIAOMI, which is intended only for the person or entity whose address is listed above. Any use of the information contained herein in any way (including, but not limited to, total or partial disclosure, reproduction, or dissemination) by persons other than the intended recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender by phone or email immediately and delete it!******/#
-------------- next part --------------
A non-text attachment was scrubbed...
Name: crash-zram0404-2.zip
Type: application/zip
Size: 4345 bytes
Desc: crash-zram0404-2.zip
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20200404/f0371730/attachment.zip>


More information about the Crash-utility mailing list