[Crash-utility] Re: [PATCH v3 ] Adding the zram decompression algorithm "lzo-rle" to support kernel versions >= 5.1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2024/03/12 17:25, Yulong TANG 汤玉龙 wrote:
> In Linux 5.1, the ZRAM block driver has changed its default compressor 
> from "lzo" to "lzo-rle" to enhance LZO compression support. However, 
> crash does not support the improved LZO algorithm, resulting in failure 
> when reading memory.
> 
>       change default compressor : ce82f19fd5809f0cf87ea9f753c5cc65ca0673d6
> 
> The issue was discovered when using the extension 'gcore' to generate a 
> process coredump, which was found to be incomplete and unable to be 
> opened properly with gdb.
> This patch is for Crash-utility tool, it enables the Crash-utility to 
> support decompression of the "lzo-rle" compression algorithm used in 
> zram. The patch has been tested with vmcore files from kernel version 
> 5.4, and successfully allows reading of memory compressed with the zram 
> compression algorithm.
> 
> Testing:
> ========
> 
> before apply this patch :
>       crash> gcore -v 0 1
>       gcore: WARNING: only the lzo compressor is supported
>       gcore: WARNING: only the lzo compressor is supported
>       gcore: WARNING: only the lzo compressor is supported
> after:
>       crash> gcore -v 0
>       1 Saved core.1.init
> 
> Changelog:
> ==========
> v2: keep the "if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)" 
> related code of the copied kernel code, but change the "if defined" 
> macro into a runtime check .
> v3: set a default value of HAVE_EFFICIENT_UNALIGNED_ACCESS depending on 
> architecture, for no ikconfig kernels.

Thanks for the update.

> +	} else if (STREQ(name, "lzo-rle")) {
> +#ifdef LZO

why are this ifdef and lzo_init() etc. needed?  I think we do not use 
the lzo library for lzo-rle.  maybe I'm missing something..

> +	bool efficient_unaligned_access;

There is no need to check this every call, how about making this static? 
  for example:

static int efficient_unaligned_access = -1;
if (efficient_unaligned_access == -1) {
#if defined(ARM) || defined(ARM64) || defined(X86) || defined(X86_64) || 
defined(PPC) || defined(PPC64) || defined(S390)|| defined(S390X)
	efficient_unaligned_access = TRUE;
#else
	efficient_unaligned_access = FALSE;
#endif
  	if ((kt->ikconfig_flags & IKCONFIG_AVAIL) &&
	    (get_kernel_config("CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS", NULL) 
== IKCONFIG_Y)
		efficient_unaligned_access = TRUE;
}

Thanks,
Kazu

> 
> Patch:
> ==========
> 
> See attachment.
> 
> 
> 
> Thanks and regards,
> Yulong
> 
> 
> --
> Crash-utility mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx
> To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxxxxxx
> https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
> Contribution Guidelines: https://github.com/crash-utility/crash/wiki
--
Crash-utility mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxxxxxx
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux