mailing list of musl libc
 help / color / mirror / code / Atom feed
From: John Mudd <johnbmudd@gmail.com>
To: Rich Felker <dalias@libc.org>
Cc: musl <musl@lists.openwall.com>
Subject: Re: posix_fallocate() fails on some machines
Date: Fri, 27 Apr 2018 16:01:40 -0400	[thread overview]
Message-ID: <CAGDMk9E4iwT4_UtyAiCStFqxY-jNkaFcjEx_HtvTg01=x-HtTw@mail.gmail.com> (raw)
In-Reply-To: <20180426205237.GM3094@brightrain.aerifal.cx>

[-- Attachment #1: Type: text/plain, Size: 2492 bytes --]

I replaced the file system on my build VM with ext3. Now the test program
returns 95, not supported.

For now my plan is to change the Postgres source code to call ftruncate(fd,
size) in place of posix_fallocate(fd, 0, size). That seems to work.



On Thu, Apr 26, 2018 at 4:52 PM, Rich Felker <dalias@libc.org> wrote:

> On Thu, Apr 26, 2018 at 04:21:07PM -0400, John Mudd wrote:
> > Thanks. It seems my mistake was to build on a VM with ext4 file system.
> My
> > intention was for the build VM to be the lowest common denominator of my
> > production PCs. That's why I use 32-bit. I'll change to ext3 on the build
> > VM.
>
> ext3 (and even ext2 I think) should support it fine. The problem is
> wacky stuff like btrfs or xfs or whatnot (not sure which one(s)).
>
> Rich
>
>
> > On Thu, Apr 26, 2018 at 4:08 PM, Rich Felker <dalias@libc.org> wrote:
> >
> > > On Thu, Apr 26, 2018 at 03:54:19PM -0400, John Mudd wrote:
> > > > I built a 32-bit dynamically linked Postgres using musl but I can't
> run
> > > on
> > > > some machines because posix_fallocate() returns 95, "not supported".
> > > >
> > > > Here's a sample program that reproduces the issue even when compiled
> > > > statically. Any suggestions?
> > > >
> > > > # Build a 32-bit static executable. Works.
> > > > $ cat test_posix_fallocate.c
> > > > #include <stdio.h>
> > > > #include <fcntl.h>
> > > > int main() {
> > > >     int fd = open("foo", O_RDWR|O_CREAT, 0666);
> > > >     if (fd < 0) return 1;
> > > >     printf("posix_fallocate() returned %d\n", posix_fallocate(fd, 0,
> > > > 400000));
> > > > }
> > > > $
> > > > $ uname -mrs
> > > > Linux 4.4.0-116-generic i686
> > > > $ musl-gcc -static -o test_posix_fallocate test_posix_fallocate.c
> > > > $ test_posix_fallocate
> > > > posix_fallocate() returned 0
> > > > $
> > > >
> > > > # Copy it to an older OS. Fails.
> > > > $ uname -mrs
> > > > Linux 2.6.32-358.14.1.el6.x86_64 x86_64
> > > > $ test_posix_fallocate
> > > > posix_fallocate() returned 95
> > > > $
> > >
> > > This is a bug in postgresql. It must accept that some underlying
> > > filesystems do not support posix_fallocate. The reason it doesn't is
> > > that glibc implements a buggy and dangerous fallback when it's not
> > > supported, resolved WONTFIX:
> > >
> > > https://sourceware.org/bugzilla/show_bug.cgi?id=6865
> > >
> > > Simply patch postgresql not to consider this a fatal error, or use a
> > > filesystem where posix_fallocate is supported (e.g. ext3/4).
> > >
> > > Rich
> > >
>

[-- Attachment #2: Type: text/html, Size: 3747 bytes --]

      reply	other threads:[~2018-04-27 20:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-26 19:54 John Mudd
2018-04-26 20:08 ` Rich Felker
2018-04-26 20:21   ` John Mudd
2018-04-26 20:52     ` Rich Felker
2018-04-27 20:01       ` John Mudd [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGDMk9E4iwT4_UtyAiCStFqxY-jNkaFcjEx_HtvTg01=x-HtTw@mail.gmail.com' \
    --to=johnbmudd@gmail.com \
    --cc=dalias@libc.org \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).