On 2024/03/28 15:38, HAGIO KAZUHITO(萩尾 一仁) wrote:
On 2024/03/26 15:38, Tang Yulong wrote:
> Hi, Kazu
>
> Thank you for your review.
>
>> On 2024/03/12 17:25, Yulong TANG 汤玉龙 wrote:
>>
>> Thanks for the update.
>>
>>
>> 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..
>
> Yes, you are right. we do not use the lzo library for lzo-rle.
> the "lzorle_decompress_safe" function should be directly used here.
>
>>
>>
>> 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;
>> }
>
> This is a good approach to avoid checking every call,
>
> I've made those modifications we talked about, tested, and it's looking
good.
> Anything else we should optimize?
Thank you for testing. a nit, we use 'ulong' for unsigned long usually,
otherwise looks fine to me.
I found a fatal error during "make extensions":
$ make extensions
gcc -Wall -g -shared -rdynamic -o echo.so echo.c -fPIC -DX86_64 -DLZO
-DSNAPPY -DZSTD -DGDB_10_2
In file included from echo.c:18:
defs.h:54:10: fatal error: lzorle_decompress.h: No such file or directory
#include "lzorle_decompress.h"
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
...
--- a/defs.h
+++ b/defs.h
@@ -51,6 +51,7 @@
#include <regex.h>
#ifdef LZO
#include <lzo/lzo1x.h>
+#include "lzorle_decompress.h"
#endif
#ifdef SNAPPY
#include <snappy-c.h>
we should move this to diskdump.c ?
Thanks,
Kazu
>
> Thanks,
> Kazu
>
>>
>> Thanks,
>> Yulong
>>
>> --- a/diskdump.c
>> +++ b/diskdump.c
>> @@ -3070,20 +3070,7 @@ try_zram_decompress(ulonglong pte_val, unsigned char *buf,
ulong len, ulonglong
>> return 0;
>> #endif
>> } else if (STREQ(name, "lzo-rle")) {
>> -#ifdef LZO
>> - if (!(dd->flags & LZO_SUPPORTED)) {
>> - if (lzo_init() == LZO_E_OK)
>> - dd->flags |= LZO_SUPPORTED;
>> - else
>> - return 0;
>> - }
>> decompressor = (void *)&lzorle_decompress_safe;
>> -#else
>> - error(WARNING,
>> - "zram decompress error: this executable needs to be
built"
>> - " with lzo-rle library\n");
>> - return 0;
>> -#endif
>> } else { /* todo: support more compressor */
>> error(WARNING, "only the lzo compressor is
supported\n");
>> return 0;
>>
>> --- a/lzorle_decompress.c
>> +++ b/lzorle_decompress.c
>> @@ -50,16 +50,18 @@ int lzorle_decompress_safe(const unsigned char *in, unsigned
long in_len,
>>
>> unsigned char bitstream_version;
>>
>> - bool efficient_unaligned_access;
>> + 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;
>> + efficient_unaligned_access = TRUE;
>> #else
>> - efficient_unaligned_access = false;
>> + efficient_unaligned_access = FALSE;
>> #endif
>>
>> - if (kt->ikconfig_flags & IKCONFIG_AVAIL)
>> - efficient_unaligned_access =
(get_kernel_config("CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS", NULL) ==
IKCONFIG_Y);
>> + if ((kt->ikconfig_flags & IKCONFIG_AVAIL) &&
get_kernel_config("CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS", NULL) ==
IKCONFIG_Y)
>> + efficient_unaligned_access = TRUE;
>> + }
>>
>>
>> --
>> Crash-utility mailing list -- devel(a)lists.crash-utility.osci.io
>> To unsubscribe send an email to devel-leave(a)lists.crash-utility.osci.io
>> 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(a)lists.crash-utility.osci.io
> To unsubscribe send an email to devel-leave(a)lists.crash-utility.osci.io
> https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
> Contribution Guidelines:
https://github.com/crash-utility/crash/wiki