Skip to content

Commit

Permalink
Use the correct precedes function for slru
Browse files Browse the repository at this point in the history
  • Loading branch information
ctring committed Dec 1, 2023
1 parent e935b9a commit e5e0358
Show file tree
Hide file tree
Showing 4 changed files with 1,973 additions and 1,257 deletions.
8 changes: 6 additions & 2 deletions libs/postgres_ffi/src/nonrelfile_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,16 @@ pub const fn clogpage_precedes(page1: u32, page2: u32) -> bool {
}

// See SlruMayDeleteSegment() in slru.c
pub fn slru_may_delete_segment(segpage: u32, cutoff_page: u32) -> bool {
pub fn slru_may_delete_segment(
segpage: u32,
cutoff_page: u32,
precedes: fn(u32, u32) -> bool,
) -> bool {
let seg_last_page = segpage + pg_constants::SLRU_PAGES_PER_SEGMENT - 1;

assert_eq!(segpage % pg_constants::SLRU_PAGES_PER_SEGMENT, 0);

clogpage_precedes(segpage, cutoff_page) && clogpage_precedes(seg_last_page, cutoff_page)
precedes(segpage, cutoff_page) && precedes(seg_last_page, cutoff_page)
}

// Multixact utils
Expand Down
4 changes: 2 additions & 2 deletions pageserver/src/walingest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -930,7 +930,7 @@ impl WalIngest {
.await?
{
let segpage = segno * pg_constants::SLRU_PAGES_PER_SEGMENT;
if slru_may_delete_segment(segpage, xlrec.pageno) {
if slru_may_delete_segment(segpage, xlrec.pageno, clogpage_precedes) {
modification
.drop_slru_segment(SlruKind::Clog, segno, ctx)
.await?;
Expand Down Expand Up @@ -1117,7 +1117,7 @@ impl WalIngest {
.await?
{
let segpage = segno * pg_constants::SLRU_PAGES_PER_SEGMENT;
if slru_may_delete_segment(segpage, pageno) {
if slru_may_delete_segment(segpage, pageno, csnlogpage_precedes) {
modification
.drop_slru_segment(SlruKind::Csn, segno, ctx)
.await?;
Expand Down
Loading

0 comments on commit e5e0358

Please sign in to comment.