On Sat, Dec 26, 2020 at 02:46:06PM -0700, shngmao@gmail.com wrote:
From: Sheng Mao <redacted>
To use optimized CRC implemention, the input buffer must be
unsigned long aligned. btrfs receive calculates checksum based on
read_buf, including btrfs_cmd_header (with zero-ed CRC field)
and command content. GCC attribute is added to both struct
btrfs_send_stream and read_buf to make sure read_buf is allocated
with proper alignment.
Issue: #324
The issue has a lot of interesting debugging and performance information
so I'd put something to the changelog as well.
The alignment fixup sounds correct, though I'd push it a bit further and
move read_buf to the beginning of the structure and align the whole
structure to 64 bytes, as this is the common cache line size. This could
potentially help too with memcpy.