Hi, On 2020-10-29 11:17:29 -0700, Andres Freund wrote: > LWLockAcquire(BufferDescriptorGetIOLock(bufdesc), LW_SHARED); > buf_state = LockBufHdr(bufdesc); > UnlockBufHdr(bufdesc, buf_state); > > /* If the page is dirty or invalid, skip it */ > if ((buf_state & BM_DIRTY) != 0 || (buf_state & BM_TAG_VALID) > == 0)
This is weird as well. What is this supposed to do? Just locking and unlocking a buffer header doesn't do squat? There's no guarantee that the flags haven't changed by this point, so you could just as well not acquire the buffer header lock. Also, why are pages without a valid tag ignored? I can follow the argument for skipping it in the DIRTY case, but that doesn't apply for BM_TAG_VALID? Greetings, Andres Freund