rgw/dedup: This PR extends the RGW dedup split-head feature to support objects that already have tail RADOS objects (i.e. objects larger than the head chunk size).
Previously, split-head was restricted to objects whose entire data fit in the head (≤4 MiB). It also migrates the split-head manifest representation from the legacy explicit-objs format to the prefix+index rules-based format. Refactored should_split_head(): Now performs a larger set of eligibility checks: * d_split_head flag is set * single-part object only * non-empty head * not a legacy manifest * not an Alibaba Cloud OSS AppendObject Explicit skips for unsupported manifest types: — old-style explicit-objs manifests — OSS AppendObject manifests (detected via non-empty override_prefix) New config option: rgw_dedup_split_obj_head: Default is true (split-head enabled). Setting to false disables split-head entirely. Tail object lookup via manifest iterator: Replaces the old get_tail_ioctx() which manually constructed the tail OID via generate_split_head_tail_name(). The new function simply calls manifest.obj_begin() and resolves the first tail object location through the standard manifest iterator. Stats cleanup: Removed the "Potential Dedup" stats section (small_objs_stat, dup_head_bytes, dup_head_bytes_estimate, ingress_skip_too_small_64KB*) which tracked 64KB–4MB objects as potential-but-skipped candidates. Since split-head now covers all sizes, this distinction is no longer meaningful. calc_deduped_bytes() is simplified accordingly. Signed-off-by: benhanokh <gbenhano@redhat.com>
B
benhanokh committed
7b72f06c992beefe5cf5994a87250c317cc90155
Parent: a67aa9b