crimson/os/seastore: rework pending extents
Previously, we simply added the old extent to the retired set and
treated the new instance seperately. Instead, let the new pending
instance reference the old instance via a prior_instance reference.
This has a few advantages:
- During commit, we swap cache hooks from the prior instance to
avoid traversal
- Extents in the retired set are only those extents that are no
longer mapped/valid.
- btree range pins can be swapped without a traversal
- position in the dirty list can be maintained
That last will be particularly important as the dirty list will
therefore be ordered from the extent with the oldest initial
delta forward.
Signed-off-by: Samuel Just <sjust@redhat.com>