]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
osd: EC Partial Stripe Reads (Retry of #23138 and #52746)
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 12 Jan 2024 15:44:51 +0000 (15:44 +0000)
committerRadosław Zarzyński <rzarzyns@redhat.com>
Mon, 3 Jun 2024 12:52:31 +0000 (14:52 +0200)
commit5813ce6c190995d304454d2437acf7fe76632685
tree4025ec4b5128f1bfa9d562f8e6c6d40eca4b5eb9
parent0f9548613323120dace95e53f67f58c6e54acd9f
osd: EC Partial Stripe Reads (Retry of #23138 and #52746)

This commit is a further ressurection of the EC partial reads
concept; this time of the Mark Nelson's work sent as PR #52746.
The modifications in this commit are mostly about settling
Mark's work on top of the recent rework of `ECBackend` which
had shared the EC codebase with the crimson-osd.

At the original description says, Mark's work is based on earlier
attempt from Xiaofei Cui.

Therefore credits go to:
  * Mark Nelson (Clyso),
  * Xiaofei Cui (cuixiaofei@sangfor.com.cn).

The original commit description is preserved below:

> This is a re-implementation of PR #23138 rebased on main with a couple of nitpicky changes to make the code a little more clear (to me at least).  Credit goes to Xiaofei Cui [cuixiaofei@sangfor.com.cn](mailto:cuixiaofei@sangfor.com.cn) for the original implementation.
>
> Looking at the original PR's review, it does not appear that we can use the same technique as in 468ad4b.  We don't have the ReadOp yet.  I'm not sure if @gregsforytwo's idea to query the plugin works, but it's clear we are not doing the efficient thing from the get-go here.
>
> The performance and efficiency benefits for small random reads appears to be quite substantial, especially for large stripe widths.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/erasure-code/ErasureCode.cc
src/erasure-code/ErasureCode.h
src/erasure-code/ErasureCodeInterface.h
src/osd/ECBackend.cc
src/osd/ECCommon.cc
src/osd/ECCommon.h
src/osd/ECUtil.cc
src/osd/ECUtil.h
src/test/erasure-code/TestErasureCodeExample.cc