[thin_delta] Fix bug when detecting right_only mappings
This commit is contained in:
parent
c8f408ac3c
commit
e4d82d04bd
@ -109,6 +109,13 @@ namespace {
|
|||||||
uint64_t vbegin_, dbegin_, len_;
|
uint64_t vbegin_, dbegin_, len_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ostream &operator <<(ostream &out, mapping const &m) {
|
||||||
|
out << "mapping[vbegin = " << m.vbegin_
|
||||||
|
<< ", dbegin = " << m.dbegin_
|
||||||
|
<< ", len = " << m.len_ << "]";
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
typedef std::deque<mapping> mapping_deque;
|
typedef std::deque<mapping> mapping_deque;
|
||||||
|
|
||||||
// Builds up an in core rep of the mappings for a device.
|
// Builds up an in core rep of the mappings for a device.
|
||||||
@ -409,7 +416,7 @@ namespace {
|
|||||||
e.left_only(left_mapping.vbegin_, left_mapping.dbegin_, delta);
|
e.left_only(left_mapping.vbegin_, left_mapping.dbegin_, delta);
|
||||||
left_mapping.consume(delta);
|
left_mapping.consume(delta);
|
||||||
|
|
||||||
} else if (left_mapping.vbegin_ > left_mapping.vbegin_) {
|
} else if (left_mapping.vbegin_ > right_mapping.vbegin_) {
|
||||||
uint64_t delta = min<uint64_t>(right_mapping.len_, left_mapping.vbegin_ - right_mapping.vbegin_);
|
uint64_t delta = min<uint64_t>(right_mapping.len_, left_mapping.vbegin_ - right_mapping.vbegin_);
|
||||||
e.right_only(right_mapping.vbegin_, right_mapping.dbegin_, delta);
|
e.right_only(right_mapping.vbegin_, right_mapping.dbegin_, delta);
|
||||||
right_mapping.consume(delta);
|
right_mapping.consume(delta);
|
||||||
|
Loading…
Reference in New Issue
Block a user