Re: [PING] fallocate() causes btrfs to never compress postgresql files

Dimitrios Apostolou <jimis@gmx.net>

From: Dimitrios Apostolou <jimis@gmx.net>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Tomas Vondra <tomas@vondra.me>, pgsql-hackers@lists.postgresql.org, Andres Freund <andres@anarazel.de>, Melanie Plageman <melanieplageman@gmail.com>, Heikki Linnakangas <hlinnaka@iki.fi>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, David Rowley <dgrowleyml@gmail.com>
Date: 2025-07-10T17:39:10Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add file_extend_method=posix_fallocate,write_zeros.

  2. Add smgrzeroextend(), FileZero(), FileFallocate()

On Thu, 12 Jun 2025, Dimitrios Apostolou wrote:

> On Mon, 9 Jun 2025, Thomas Munro wrote:
>
>>  On Tue, Jun 3, 2025 at 1:58 AM Dimitrios Apostolou <jimis@gmx.net> wrote:
>>>  This sounds like the best solution IMO. People can then experiment with
>>>  different settings and filesystems, and that way we also learn in the
>>>  process. Thank you for the effort and patches so far.
>>
>>  OK, here's a basic patch to experiment with.  You can set:
>>
>>  file_extend_method = fallocate,ftruncate,write
>>  file_extend_method_threshold = 8 # (below 8 always write, 0 means never
>>  write)
>> 
>
> I applied the patch on PostgreSQL v17 and am testing it now. I chose 
> ftruncate method and I see ftruncate in action using strace while doing 
> pg_restore of a big database. Nothing unexpected has happened so far. I also 
> verified that files are being compressed, obeying Btrfs's mount option 
> compress=zstd.
>
> Thanks for the patch! What are the odds of commiting it to v17?

Ping. :-)
Patch behaves good for me. Any chance of applying it and backporting it?

>
> Dimitris
>
>