osd: sparse reads returning invalid extent map
Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
op.extent.length = total_read;
- osd_op.outdata.claim_append(bl);
+ ::encode(m, osd_op.outdata); // re-encode since it might be modified
::encode_destructively(data_bl, osd_op.outdata);
- ctx->delta_stats.num_rd_kb += SHIFT_ROUND_UP(op.extent.length, 10);
- ctx->delta_stats.num_rd++;
-
dout(10) << " sparse_read got " << total_read << " bytes from object " << soid << dendl;
}
+ ctx->delta_stats.num_rd_kb += SHIFT_ROUND_UP(op.extent.length, 10);
+ ctx->delta_stats.num_rd++;
break;
case CEPH_OSD_OP_CALL: