mirror of
https://github.com/ceph/ceph
synced 2025-02-24 03:27:10 +00:00
crimson/os/seastore/lba_manager: drop from cache directly during replay if dead
Dead extents can't go through the normal retire_extent path as they don't have valid pins or other elements of a real extent. Instead, simply drop them on the floor directly. Signed-off-by: Samuel Just <sjust@redhat.com>
This commit is contained in:
parent
5539b54547
commit
5e840a20b8
@ -85,6 +85,17 @@ public:
|
||||
Cache(SegmentManager &segment_manager);
|
||||
~Cache();
|
||||
|
||||
/**
|
||||
* drop_from_cache
|
||||
*
|
||||
* Drop extent from cache. Intended for use when
|
||||
* ref refers to a logically dead extent as during
|
||||
* replay.
|
||||
*/
|
||||
void drop_from_cache(CachedExtentRef ref) {
|
||||
remove_extent(ref);
|
||||
}
|
||||
|
||||
/// Declare ref retired in t
|
||||
void retire_extent(Transaction &t, CachedExtentRef ref) {
|
||||
t.add_to_retired_set(ref);
|
||||
|
@ -259,7 +259,7 @@ BtreeLBAManager::init_cached_extent_ret BtreeLBAManager::init_cached_extent(
|
||||
} else {
|
||||
// e is obsolete
|
||||
logger().debug("init_cached_extent: {} obsolete", *e);
|
||||
cache.retire_extent(t, e);
|
||||
cache.drop_from_cache(e);
|
||||
}
|
||||
return init_cached_extent_ertr::now();
|
||||
});
|
||||
@ -279,12 +279,12 @@ BtreeLBAManager::init_cached_extent_ret BtreeLBAManager::init_cached_extent(
|
||||
} else {
|
||||
// paddr doesn't match, remapped, obsolete
|
||||
logger().debug("init_cached_extent: {} obsolete", *logn);
|
||||
cache.retire_extent(t, logn);
|
||||
cache.drop_from_cache(logn);
|
||||
}
|
||||
} else {
|
||||
// set of extents changed, obsolete
|
||||
logger().debug("init_cached_extent: {} obsolete", *logn);
|
||||
cache.retire_extent(t, logn);
|
||||
cache.drop_from_cache(logn);
|
||||
}
|
||||
return init_cached_extent_ertr::now();
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user