]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore/object_data_handler: we don't have to maintain the
authorXuehan Xu <xuxuehan@qianxin.com>
Tue, 12 Aug 2025 08:24:08 +0000 (16:24 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Sun, 28 Sep 2025 06:48:59 +0000 (14:48 +0800)
commite29927358c5da767e62c0a435eb036f0bbe2103e
treef37f50223d573a69a6cfc2fff6cce2ca1ec38fce
parentb8a9b77506ece1b9caccd3c533986d143e5ebe03
crimson/os/seastore/object_data_handler: we don't have to maintain the
symmetric indirect lba relationship at the time of clone

OP_CLONE is done in the following way:
1. First, swap the layout of the head onode and the clone onode, so that
   clone onode's object_data, omap_root, xattr_root and log_root all
   point to the head onode's corresponding fields;
2. Do SeaStore::_clone() from the clone onode to the head onode, which
   is exactly what rollback is done.

This makes the code of ObjectDataHandler::clone() and
ObjectDataHandler::copy_on_write() even simpler, and can facilitate the
clone/rollback scenarios when the "128-bit" lba key layout is involved.

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/os/seastore/lba_mapping.h
src/crimson/os/seastore/object_data_handler.cc
src/crimson/os/seastore/object_data_handler.h
src/crimson/os/seastore/onode.h
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/seastore_types.h
src/crimson/os/seastore/transaction_manager.h