Re: [PATCH 00/12] Save memory for stripe_head buffer

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

 



On Wed, Aug 12, 2020 at 5:48 AM Yufen Yu <yuyufen@xxxxxxxxxx> wrote:
>
> Hi, all
>
>  In current implementation, grow_buffers() uses alloc_page() to allocate
>  the buffers for each stripe_head, i.e. allocate a page for each dev[i]
>  in stripe_head.
>
>  After setting stripe_size as a configurable value by writing sysfs entry,
>  it means that we always allocate 64K buffers, but just use 4K of them when
>  stripe_size is 4K in 64KB arm64.
>
>  To save memory, we try to let multiple buffers of stripe_head to share only
>  one real page when page size is bigger than stripe_size. Detail can be
>  seen in patch #10.
>
>  This patch set is subsequent optimization for configurable stripe_size,
>  which based on the origin patches[1] but reorganized them.
>
>  Patch 1 ~ 2 try to replace current page offset '0' with dev[i].offset.
>  Patch 3 ~ 5 let xor compute functions support different page offset for raid5.
>  Patch 6 ~ 9 let syndrome and recovery function support different page offset for raid6.
>  All of these patch are preparing for shared page. There is no functional change.
>
>  Patch 10 ~ 11 actually implement shared page between multiple devices of
>  stripe_head. But they only make sense for PAGE_SIZE != 4096, likely, 64KB arm64
>  system. It doesn't make any difference for PAGE_SIZE == 4096 system, likely x86.

Thanks for the patches.

I went through the first half of the set, most of the code looks fine.
However, there is
one issue: the way you split the changes into 12 patches is not ideal. The most
significant issue is that build failed after 5/12 or 6/12 (and was
fixed after 9/12). We
would like every commit build successfully. I think the proper fix is
to break 9/12 and
merge changes in raid5.c to proper patches. Also, I think we can merge
1/12 and 2/12.

Please resubmit after these changes.

Thanks,
Song



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux