]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
osd: set r only if succeed in FillInVerifyExtent
authoryanqiang-ux <yanqiang_ux@163.com>
Mon, 7 Jun 2021 07:54:44 +0000 (15:54 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 9 Jun 2021 08:44:06 +0000 (16:44 +0800)
commit127745161fbcdee06b2dfa8464270c3934bcd06a
treec90df9deb6fa03614c1d33e8c87499f6c85ee020
parentcf8814d3165a0b29e3695ccaf09f529d15737bef
osd: set r only if succeed in FillInVerifyExtent

When read failed, ret can be taken as data len in FillInVerifyExtent, which should be avoided.
It may cause errors in crc repair or retry read because of the data len. In my case, we use FillInVerifyExtent for EC read,
when meet -EIO,we will try crc repair, which need read data from other shard accrding to data len.
And I meet assert in ECBackend.cc (loc: line 2288 ceph_assert(range.first != range.second) ), But it seems master branch not support EC crc repair.
In shot, when reuse the readop may cause unpredictable error.

Fixes: https://tracker.ceph.com/issues/51115
Signed-off-by: yanqiang-ux <yanqiang_ux@163.com>
src/osd/PrimaryLogPG.cc