]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore: embed the root pointers directly in the root delta
authorSamuel Just <sjust@redhat.com>
Wed, 17 Jun 2020 18:46:26 +0000 (11:46 -0700)
committerSamuel Just <sjust@redhat.com>
Fri, 19 Jun 2020 19:59:26 +0000 (12:59 -0700)
commit4252b87c1e163382424e14c7406bc08527f271df
treeff420a817812546be864055f15e95ff356bef8c5
parent31bfa078ac8e92b52157d0908361ff871c96e6f1
crimson/os/seastore: embed the root pointers directly in the root delta

Previously, I set it up so that there was a "magic" ROOT_LOCATION delta
associated with no block type which would point at the root block.  As
long as replaying the journal yielded at least one of those, we'd
therefore be able to find the most recent root block.  However, in
practice, the entire root block is unlikely to ever weigh in at more
than 100 bytes or so.  Thus, this patch does a few things:
- ROOT_LOCATION deltas are removed
- ROOT deltas contain an encoding of the entire root block
- ROOT blocks are never actually written down except in these deltas
- ROOT blocks do not have a physical address
- ROOT blocks never show up in the transaction fresh or mutated lists
  nor do they show up in the cache extent set or dirty list

This adds a little bit of special handling, but the root was already
special due to a need for cache interface users to discover it without
knowing the physical address.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/CMakeLists.txt
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/cache.h
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc
src/crimson/os/seastore/root_block.cc [deleted file]
src/crimson/os/seastore/root_block.h
src/crimson/os/seastore/seastore_types.cc
src/crimson/os/seastore/seastore_types.h
src/crimson/os/seastore/transaction_manager.cc
src/test/crimson/seastore/test_btree_lba_manager.cc
src/test/crimson/seastore/test_seastore_cache.cc