Normal reads instead of hole-reads should trigger auto-repair.
Also we shall quit on successfully triggering a repair, or else
we are at risk of doing the op multiple times.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
bufferlist t;
uint64_t len = miter->first - last;
r = pgbackend->objects_read_sync(soid, last, len, op.flags, &t);
- if (r == -EIO) {
- r = rep_repair_primary_object(soid, ctx->op);
- }
if (r < 0) {
osd->clog->error() << coll << " " << soid
<< " sparse-read failed to read: "
bufferlist tmpbl;
r = pgbackend->objects_read_sync(soid, miter->first, miter->second,
op.flags, &tmpbl);
+ if (r == -EIO) {
+ r = rep_repair_primary_object(soid, ctx->op);
+ }
if (r < 0) {
return r;
}