Re: CREATE DATABASE with filesystem cloning - Mailing list pgsql-hackers

From Ranier Vilela
Subject Re: CREATE DATABASE with filesystem cloning
Date
Msg-id CAEudQAr19fkvGjWsPEOdF9G01rL-PM9UUOxFaqcVvdG-30R58w@mail.gmail.com
Whole thread Raw
In response to Re: CREATE DATABASE with filesystem cloning  (Nazir Bilal Yavuz <byavuz81@gmail.com>)
Responses Re: CREATE DATABASE with filesystem cloning
List pgsql-hackers

Em qua., 8 de mai. de 2024 às 04:37, Nazir Bilal Yavuz <byavuz81@gmail.com> escreveu:
Hi Ranier,

Thanks for looking into this!

I am not sure why but your reply does not show up in the thread, so I
copied your reply and answered it in the thread for visibility.

On Tue, 7 May 2024 at 16:28, Ranier Vilela <ranier.vf@gmail.com> wrote:
>
> I know it's coming from copy-and-paste, but
> I believe the flags could be:
> - dstfd = OpenTransientFile(tofile, O_RDWR | O_CREAT | O_EXCL | PG_BINARY);
> + dstfd = OpenTransientFile(tofile, O_CREAT | O_WRONLY | O_TRUNC | O_EXCL | PG_BINARY);
>
> The flags:
> O_WRONLY | O_TRUNC
>
> Allow the OS to make some optimizations, if you deem it possible.
>
> The flag O_RDWR indicates that the file can be read, which is not true in this case.
> The destination file will just be written.

You may be right about the O_WRONLY flag but I am not sure about the
O_TRUNC flag.

O_TRUNC from the linux man page [1]: If the file already exists and is
a regular file and the access mode allows writing (i.e., is O_RDWR or
O_WRONLY) it will be truncated to length 0.  If the file is a FIFO  or
terminal device file, the O_TRUNC flag is ignored. Otherwise, the
effect of O_TRUNC is unspecified.
O_TRUNC is usually used in conjunction with O_WRONLY.
See the example at:

O_TRUNC signals the OS to forget the current contents of the file, if it happens to exist.
In other words, there will be no seeks, only and exclusively writes.


But it should be already checked if the destination directory already
exists in dbcommands.c file in createdb() function [2], so this should
not happen.
I'm not sure what you're referring to here.

best regards,
Ranier Vilela

pgsql-hackers by date:

Previous
From: Dagfinn Ilmari Mannsåker
Date:
Subject: Re: Expand applicability of aggregate's sortop optimization
Next
From: Sriram RK
Date:
Subject: Re: AIX support