They might have a dirty/invalid log history (and hence an invalid
clean_regions as well), and there is no easy way to deduce the
complete clean_regions portion.
For simplicity (and correctness), disable potential incremental recovery
mode for these objects.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
ceph_assert(!missing.is_missing(hoid));
}
missing.revise_have(hoid, eversion_t());
+ missing.mark_fully_dirty(hoid);
if (rollbacker) {
if (!object_not_in_store) {
rollbacker->remove(hoid);
}
}
+ void mark_fully_dirty(const hobject_t& oid) {
+ auto p = missing.find(oid);
+ if (p != missing.end()) {
+ tracker.changed(oid);
+ (p->second).clean_regions.mark_fully_dirty();
+ }
+ }
+
void add(const hobject_t& oid, eversion_t need, eversion_t have,
bool is_delete, bool make_dirty = true) {
//if have== eversion_t() means that the object does not exist, we transfer new_object = true