Thread (15 messages) 15 messages, 2 authors, 2020-08-20

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

From: Song Liu <song@kernel.org>
Date: 2020-08-20 00:25:26

On Wed, Aug 12, 2020 at 5:48 AM Yufen Yu [off-list ref] 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help