});
}
+void omaptree_update_root(
+ Transaction& t,
+ omap_root_t& root,
+ Onode& onode)
+{
+ assert(root.must_update());
+ if (root.get_type() == omap_type_t::OMAP) {
+ onode.update_omap_root(t, root);
+ } else if (root.get_type() == omap_type_t::XATTR) {
+ onode.update_xattr_root(t, root);
+ } else {
+ assert(root.get_type() == omap_type_t::LOG);
+ onode.update_log_root(t, root);
+ }
+}
+
SeaStore::base_iertr::future<>
SeaStore::Shard::omaptree_clear(
Transaction& t,
).si_then([&t, &onode, FNAME](auto root) {
assert(root.is_null());
assert(root.must_update());
- if (root.get_type() == omap_type_t::XATTR) {
- onode.update_xattr_root(t, root);
- } else {
- assert(root.get_type() == omap_type_t::OMAP);
- onode.update_omap_root(t, root);
- }
+ omaptree_update_root(t, root, onode);
DEBUGT("{} done", t, root.get_type());
});
}
});
}).si_then([&onode, &t](auto root) {
if (root.must_update()) {
- if (root.get_type() == omap_type_t::OMAP) {
- onode->update_omap_root(t, root);
- } else if (root.get_type() == omap_type_t::XATTR) {
- onode->update_xattr_root(t, root);
- } else {
- ceph_assert(root.get_type() == omap_type_t::LOG);
- onode->update_log_root(t, root);
- }
+ omaptree_update_root(t, root, *onode);
}
});
}
return omap_manager.omap_rm_key(root, *ctx.transaction, p);
}).si_then([&ctx, &root, &onode] {
if (root.must_update()) {
- if (root.get_type() == omap_type_t::OMAP) {
- onode->update_omap_root(*ctx.transaction, root);
- } else {
- ceph_assert(root.get_type() == omap_type_t::LOG);
- onode->update_log_root(*ctx.transaction, root);
- }
+ omaptree_update_root(*ctx.transaction, root, *onode);
}
});
});
root, *ctx.transaction, first, last, config
).si_then([&ctx, &root, &onode] {
if (root.must_update()) {
- if (root.get_type() == omap_type_t::OMAP) {
- onode->update_omap_root(*ctx.transaction, root);
- } else {
- ceph_assert(root.get_type() == omap_type_t::LOG);
- onode->update_log_root(*ctx.transaction, root);
- }
+ omaptree_update_root(*ctx.transaction, root, *onode);
}
});
});
return omap_manager.omap_rm_key(root, *ctx.transaction, name
).si_then([&ctx, &root, &onode] {
if (root.must_update()) {
- onode->update_xattr_root(*ctx.transaction, root);
+ omaptree_update_root(*ctx.transaction, root, *onode);
}
});
});