Re: Checkpointer write combining

Chao Li <li.evan.chao@gmail.com>

From: Chao Li <li.evan.chao@gmail.com>
To: Melanie Plageman <melanieplageman@gmail.com>
Cc: Nazir Bilal Yavuz <byavuz81@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Andres Freund <andres@anarazel.de>
Date: 2025-11-19T02:09:42Z
Lists: pgsql-hackers

> On Nov 19, 2025, at 10:00, Chao Li <li.evan.chao@gmail.com> wrote:
> 
> 
> 
>> On Nov 19, 2025, at 02:49, Melanie Plageman <melanieplageman@gmail.com> wrote:
>> 
>> I no longer remember why I made that patch WIP, so I've removed that
>> designation.
> 
> I just reviewed 0007. It removes the second parameter "bool skip_recently_used”  from SyncOneBuffer. The function is static and is only called in one place with skip_recently_used=true, thus removing the parameter seems reasonable, and without considering pinned buffer, the function is simplified a little bit.
> 
> I only got a tiny comment:
> ```
> + * We can make these check without taking the buffer content lock so
> ``` 
> 
> As you changed “this” to “these”, “check” should be changed to “checks” accordingly.
> 

I just got an compile error:
```
bufmgr.c:3580:33: error: no member named 'dbId' in 'struct CkptSortItem'
 3580 |                                 batch.rlocator.dbOid = item.dbId;
      |                                                        ~~~~ ^
bufmgr.c:3598:13: error: no member named 'dbId' in 'struct CkptSortItem'
 3598 |                         if (item.dbId != batch.rlocator.dbOid)
      |                             ~~~~ ^
2 errors generated.
make[4]: *** [bufmgr.o] Error 1
```

I tried “make clean” and “make” again, which didn’t work. I think the error is introduced by 0006.

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/