maybe_force_recovery();
}
-bool PrimaryLogPG::is_dedup_chunk(const object_info_t& oi, const chunk_info_t& chunk)
+bool PrimaryLogPG::is_dedup_chunk(const chunk_info_t& chunk)
{
if (pg_pool_t::fingerprint_t fp_algo = pool.info.get_fingerprint_type();
chunk.has_reference() &&
*
*/
- if (is_dedup_chunk(obc->obs.oi, iter->second)) {
+ if (is_dedup_chunk(iter->second)) {
pg_pool_t::fingerprint_t fp_algo = pool.info.get_fingerprint_type();
object_t fp_oid = [&fp_algo, &chunk_data]() -> string {
switch (fp_algo) {
ObjectContextRef cobc = nullptr;
ObjectContextRef obc = ctx->obc;
for (auto &p : ctx->obs->oi.manifest.chunk_map) {
- if (!ctx->clean_regions.is_clean_region(p.first, p.second.length)) {
- ctx->new_obs.oi.manifest.chunk_map.erase(p.first);
- if (ctx->new_obs.oi.manifest.chunk_map.empty()) {
- ctx->new_obs.oi.manifest.type = object_manifest_t::TYPE_NONE;
- ctx->new_obs.oi.clear_flag(object_info_t::FLAG_MANIFEST);
- ctx->delta_stats.num_objects_manifest--;
+ if (is_dedup_chunk(p.second)) {
+ if (!ctx->clean_regions.is_clean_region(p.first, p.second.length)) {
+ ctx->new_obs.oi.manifest.chunk_map.erase(p.first);
+ if (ctx->new_obs.oi.manifest.chunk_map.empty()) {
+ ctx->new_obs.oi.manifest.type = object_manifest_t::TYPE_NONE;
+ ctx->new_obs.oi.clear_flag(object_info_t::FLAG_MANIFEST);
+ ctx->delta_stats.num_objects_manifest--;
+ }
}
}
}
void dec_all_refcount_manifest(const object_info_t& oi, OpContext* ctx);
void dec_refcount(const hobject_t& soid, const object_ref_delta_t& refs);
void dec_refcount_by_dirty(OpContext* ctx);
- bool is_dedup_chunk(const object_info_t& oi, const chunk_info_t& chunk);
+ bool is_dedup_chunk(const chunk_info_t& chunk);
ObjectContextRef get_prev_clone_obc(ObjectContextRef obc);
friend struct C_ProxyChunkRead;