return ret;
}
+ /// @return true if object is snapdir
+ bool is_snapdir() const {
+ return snap == CEPH_SNAPDIR;
+ }
+
/// @return snapdir version of this hobject_t
hobject_t get_snapdir() const {
hobject_t ret(*this);
assert(i->first > new_last_backfill);
new_last_backfill = i->first;
}
+
+ /* If last_backfill is snapdir, we know that head necessarily cannot exist,
+ * therefore it's safe to bump the snap up to NOSNAP. This is necessary
+ * since we need avoid having SNAPDIR backfilled and HEAD not backfilled
+ * since a transaction on HEAD might change SNAPDIR
+ */
+ if (new_last_backfill.is_snapdir())
+ new_last_backfill = new_last_backfill.get_head();
+ if (last_backfill_started.is_snapdir())
+ last_backfill_started = last_backfill_started.get_head();
+
assert(!pending_backfill_updates.empty() ||
new_last_backfill == last_backfill_started);
if (pending_backfill_updates.empty() &&