mirror of
https://github.com/ceph/ceph
synced 2025-03-22 02:08:13 +00:00
Merge pull request #24564 from neha-ojha/wip-21931
osd: do not overestimate the size of the object for reads with trimtrunc Reviewed-by: Sage Weil <sage@redhat.com> Reviewed-by: Josh Durgin <jdurgin@redhat.com> Reviewed By: Xie Xingguo <xie.xingguo@zte.com.cn>
This commit is contained in:
commit
05fea962f1
@ -2200,6 +2200,10 @@ void ECBackend::objects_read_async(
|
||||
auto range = got.second.get_containing_range(offset, length);
|
||||
ceph_assert(range.first != range.second);
|
||||
ceph_assert(range.first.get_off() <= offset);
|
||||
ldpp_dout(dpp, 30) << "offset: " << offset << dendl;
|
||||
ldpp_dout(dpp, 30) << "range offset: " << range.first.get_off() << dendl;
|
||||
ldpp_dout(dpp, 30) << "length: " << length << dendl;
|
||||
ldpp_dout(dpp, 30) << "range length: " << range.first.get_len() << dendl;
|
||||
ceph_assert(
|
||||
(offset + length) <=
|
||||
(range.first.get_off() + range.first.get_len()));
|
||||
|
@ -5435,9 +5435,15 @@ int PrimaryLogPG::do_read(OpContext *ctx, OSDOp& osd_op) {
|
||||
uint64_t size = oi.size;
|
||||
bool trimmed_read = false;
|
||||
|
||||
dout(30) << __func__ << " oi.size: " << oi.size << dendl;
|
||||
dout(30) << __func__ << " oi.truncate_seq: " << oi.truncate_seq << dendl;
|
||||
dout(30) << __func__ << " op.extent.truncate_seq: " << op.extent.truncate_seq << dendl;
|
||||
dout(30) << __func__ << " op.extent.truncate_size: " << op.extent.truncate_size << dendl;
|
||||
|
||||
// are we beyond truncate_size?
|
||||
if ( (seq < op.extent.truncate_seq) &&
|
||||
(op.extent.offset + op.extent.length > op.extent.truncate_size) )
|
||||
(op.extent.offset + op.extent.length > op.extent.truncate_size) &&
|
||||
(size > op.extent.truncate_size) )
|
||||
size = op.extent.truncate_size;
|
||||
|
||||
if (op.extent.length == 0) //length is zero mean read the whole object
|
||||
@ -5451,6 +5457,8 @@ int PrimaryLogPG::do_read(OpContext *ctx, OSDOp& osd_op) {
|
||||
trimmed_read = true;
|
||||
}
|
||||
|
||||
dout(30) << __func__ << "op.extent.length is now " << op.extent.length << dendl;
|
||||
|
||||
// read into a buffer
|
||||
int result = 0;
|
||||
if (trimmed_read && op.extent.length == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user