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.