[Crash-utility] Re: [PATCH] remove struct zspage_5_17 and use union to resolve issue

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

 



Hi Guanyou,

Thanks for the improvement. However I'd like to improve the commit log
as follows:

This patch is a refactoring on commit [1], and has no functional
change. The reason is that the structure of zspage has not changed,
just new bits have been introduced. So a union is better to reduce
code replication.

What do you think?

For the rest of the patch, ack.

Thanks,
Tao LIu

On Wed, May 8, 2024 at 11:06 AM Guanyou Chen <chenguanyou9338@xxxxxxxxx> wrote:
>
> Hi Tao,
>
> Attached updated [PATCH V2].
>
> Tao Liu <ltao@xxxxxxxxxx> 于2024年5月3日周五 17:58写道:
>>
>> Hi Guanyou,
>>
>> Thanks for your patch, just some minor comments:
>>
>>
>> On Wed, Apr 24, 2024 at 5:24 PM Guanyou Chen <chenguanyou9338@xxxxxxxxx> wrote:
>> >
>> > Hi LianBo
>> >
>> > We don't need struct zspage_5_17.
>>
>> Could you please rewrite your commit message, so people can know what
>> the patch is trying to do without diving into the code? E.g.
>> refactoring the code by combining 2 structures into one etc.
>>
>> >
>> > ---
>> >  defs.h     | 32 +++++++++++++++-----------------
>> >  diskdump.c | 15 ++++++---------
>> >  2 files changed, 21 insertions(+), 26 deletions(-)
>> >
>> > diff --git a/defs.h b/defs.h
>> > index 3cb8e63..01f316e 100644
>> > --- a/defs.h
>> > +++ b/defs.h
>> > @@ -7407,28 +7407,26 @@ ulong try_zram_decompress(ulonglong pte_val, unsigned char *buf, ulong len, ulon
>> >  #define SECTORS_PER_PAGE        (1 << SECTORS_PER_PAGE_SHIFT)
>> >
>> >  struct zspage {
>> > -    struct {
>> > -        unsigned int fullness : 2;
>> > -        unsigned int class : 9;
>> > -        unsigned int isolated : 3;
>> > -        unsigned int magic : 8;
>> > +    union {
>> > +        unsigned int flag_bits;
>> > +        struct {
>> > +            unsigned int fullness : 2;
>> > +            unsigned int class : 9;
>> > +            unsigned int isolated : 3;
>> > +            unsigned int magic : 8;
>> > +        } v0;
>> > +        struct {
>> > +            unsigned int huge : 1;
>> > +            unsigned int fullness : 2;
>> > +            unsigned int class : 9;
>> > +            unsigned int isolated : 3;
>> > +            unsigned int magic : 8;
>> > +        } v5_17;
>> >      };
>> >      unsigned int inuse;
>> >      unsigned int freeobj;
>> >  };
>> >
>> > -struct zspage_5_17 {
>> > -   struct {
>> > -       unsigned int huge : 1;
>> > -       unsigned int fullness : 2;
>> > -       unsigned int class : 9;
>> > -       unsigned int isolated : 3;
>> > -       unsigned int magic : 8;
>> > -   };
>> > -   unsigned int inuse;
>> > -   unsigned int freeobj;
>> > -};
>> > -
>> >  /*
>> >   * makedumpfile.c
>> >   */
>> > diff --git a/diskdump.c b/diskdump.c
>> > index 3ae7bf2..a928a0e 100644
>> > --- a/diskdump.c
>> > +++ b/diskdump.c
>> > @@ -2819,7 +2819,6 @@ zram_object_addr(ulong pool, ulong handle, unsigned char *zram_buf)
>> >  {
>> >     ulong obj, off, class, page, zspage;
>> >     struct zspage zspage_s;
>> > -   struct zspage_5_17 zspage_5_17_s;
>> >     physaddr_t paddr;
>> >     unsigned int obj_idx, class_idx, size;
>> >     ulong pages[2], sizes[2];
>> > @@ -2833,15 +2832,13 @@ zram_object_addr(ulong pool, ulong handle, unsigned char *zram_buf)
>> >     readmem(page + OFFSET(page_private), KVADDR, &zspage,
>> >             sizeof(void *), "page_private", FAULT_ON_ERROR);
>> >
>> > +    readmem(zspage, KVADDR, &zspage_s, sizeof(struct zspage), "zspage", FAULT_ON_ERROR);
>> ^^^^^
>> In your patch file attached, here is space instead of tab.
>>
>> Thanks,
>> Tao Liu
>>
>> >     if (VALID_MEMBER(zspage_huge)) {
>> > -       readmem(zspage, KVADDR, &zspage_5_17_s,
>> > -           sizeof(struct zspage_5_17), "zspage_5_17", FAULT_ON_ERROR);
>> > -       class_idx = zspage_5_17_s.class;
>> > -       zs_magic = zspage_5_17_s.magic;
>> > +       class_idx = zspage_s.v5_17.class;
>> > +       zs_magic = zspage_s.v5_17.magic;
>> >     } else {
>> > -       readmem(zspage, KVADDR, &zspage_s, sizeof(struct zspage), "zspage", FAULT_ON_ERROR);
>> > -       class_idx = zspage_s.class;
>> > -       zs_magic = zspage_s.magic;
>> > +       class_idx = zspage_s.v0.class;
>> > +       zs_magic = zspage_s.v0.magic;
>> >     }
>> >
>> >     if (zs_magic != ZSPAGE_MAGIC)
>> > @@ -2887,7 +2884,7 @@ zram_object_addr(ulong pool, ulong handle, unsigned char *zram_buf)
>> >
>> >  out:
>> >     if (VALID_MEMBER(zspage_huge)) {
>> > -       if (!zspage_5_17_s.huge)
>> > +       if (!zspage_s.v5_17.huge)
>> >             return (zram_buf + ZS_HANDLE_SIZE);
>> >     } else {
>> >         readmem(page, KVADDR, &obj, sizeof(void *), "page flags", FAULT_ON_ERROR);
>> > --
>> > 2.39.0
>> > --
>> > 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