auto& num_blobs = ctx.num_blobs;
auto& num_sharded_objects = ctx.num_sharded_objects;
auto& num_spanning_blobs = ctx.num_spanning_blobs;
- auto& used_blocks = ctx.used_blocks;
+ auto used_blocks = ctx.used_blocks;
auto& sb_info = ctx.sb_info;
auto repairer = ctx.repairer;
}
}
} else if (depth != FSCK_SHALLOW) {
+ ceph_assert(used_blocks);
errors += _fsck_check_extents(c->cid, oid, blob.get_extents(),
blob.is_compressed(),
- used_blocks,
+ *used_blocks,
fm->get_alloc_size(),
repairer,
onode_statfs,
const BlueStore::FSCK_ObjectCtx& ctx)
{
auto& errors = ctx.errors;
- auto& warnings = ctx.warnings;
- auto& used_omap_head = ctx.used_omap_head;
- auto& used_pgmeta_omap_head = ctx.used_pgmeta_omap_head;
- auto repairer = ctx.repairer;
+ auto* used_omap_head = ctx.used_omap_head;
+ auto* used_pgmeta_omap_head = ctx.used_pgmeta_omap_head;
uint64_t_btree_t used_nids;
}
// omap
if (o->onode.has_omap()) {
- auto& m =
+ ceph_assert(used_omap_head);
+ ceph_assert(used_pgmeta_omap_head);
+ auto m =
o->onode.is_pgmeta_omap() ? used_pgmeta_omap_head : used_omap_head;
- if (m.count(o->onode.nid)) {
+ if (m->count(o->onode.nid)) {
derr << "fsck error: " << oid << " omap_head " << o->onode.nid
<< " already in use" << dendl;
++errors;
} else {
- m.insert(o->onode.nid);
+ m->insert(o->onode.nid);
}
}
if (depth == FSCK_DEEP) {
unsigned repaired = 0;
uint64_t_btree_t used_omap_head;
- uint64_t_btree_t used_per_pool_omap_head; // just a placeholder to be inline with masterD
uint64_t_btree_t used_pgmeta_omap_head;
uint64_t_btree_t used_sbids;
num_blobs,
num_sharded_objects,
num_spanning_blobs,
- used_blocks,
- used_omap_head,
- used_per_pool_omap_head,
- used_pgmeta_omap_head,
+ &used_blocks,
+ &used_omap_head,
+ nullptr,
+ &used_pgmeta_omap_head,
sb_info,
expected_store_statfs,
expected_pool_statfs,
uint64_t& num_sharded_objects;
uint64_t& num_spanning_blobs;
- mempool_dynamic_bitset& used_blocks;
- uint64_t_btree_t& used_omap_head;
- uint64_t_btree_t& used_per_pool_omap_head;
- uint64_t_btree_t& used_pgmeta_omap_head;
+ mempool_dynamic_bitset* used_blocks;
+ uint64_t_btree_t* used_omap_head;
+ uint64_t_btree_t* used_per_pool_omap_head;
+ uint64_t_btree_t* used_pgmeta_omap_head;
sb_info_map_t& sb_info;
store_statfs_t& expected_store_statfs;
per_pool_statfs& expected_pool_statfs;
BlueStoreRepairer* repairer;
- FSCK_ObjectCtx(
- int64_t& e,
- int64_t& w,
- uint64_t& _num_objects,
- uint64_t& _num_extents,
- uint64_t& _num_blobs,
- uint64_t& _num_sharded_objects,
- uint64_t& _num_spanning_blobs,
- mempool_dynamic_bitset& _ub,
- uint64_t_btree_t& _used_omap_head,
- uint64_t_btree_t& _used_per_pool_omap_head,
- uint64_t_btree_t& _used_pgmeta_omap_head,
- sb_info_map_t& _sb_info,
- store_statfs_t& _store_statfs,
- per_pool_statfs& _pool_statfs,
- BlueStoreRepairer* _repairer) :
+ FSCK_ObjectCtx(int64_t& e,
+ int64_t& w,
+ uint64_t& _num_objects,
+ uint64_t& _num_extents,
+ uint64_t& _num_blobs,
+ uint64_t& _num_sharded_objects,
+ uint64_t& _num_spanning_blobs,
+ mempool_dynamic_bitset* _ub,
+ uint64_t_btree_t* _used_omap_head,
+ uint64_t_btree_t* _used_per_pool_omap_head,
+ uint64_t_btree_t* _used_pgmeta_omap_head,
+ sb_info_map_t& _sb_info,
+ store_statfs_t& _store_statfs,
+ per_pool_statfs& _pool_statfs,
+ BlueStoreRepairer* _repairer) :
errors(e),
warnings(w),
num_objects(_num_objects),