feat(pageserver): use vectored_get in collect_keyspace

Signed-off-by: Alex Chi Z <chi@neon.tech>
This commit is contained in:
Alex Chi Z
2025-01-28 20:31:15 +01:00
parent c54cd9e76a
commit 3fb6e258dc
3 changed files with 81 additions and 10 deletions

View File

@@ -464,6 +464,18 @@ pub fn rel_size_to_key(rel: RelTag) -> Key {
}
}
#[inline(always)]
pub fn rel_size_key_to_rel(key: Key) -> RelTag {
assert_eq!(key.field1, 0x00);
assert_eq!(key.field6, 0xffff_ffff);
RelTag {
forknum: key.field5,
spcnode: key.field2,
dbnode: key.field3,
relnode: key.field4,
}
}
impl Key {
#[inline(always)]
pub fn is_rel_size_key(&self) -> bool {
@@ -559,6 +571,15 @@ pub fn slru_segment_size_to_key(kind: SlruKind, segno: u32) -> Key {
}
}
#[inline(always)]
pub fn slru_segment_size_key_to_segno(key: Key) -> u32 {
assert_eq!(key.field1, 0x01);
assert_eq!(key.field3, 1);
assert_eq!(key.field5, 0);
assert_eq!(key.field6, 0xffff_ffff);
key.field4
}
impl Key {
pub fn is_slru_segment_size_key(&self) -> bool {
self.field1 == 0x01