This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4/4] Remove broken posix_fallocate, posix_falllocate64 fallback code [BZ#15661]


On Mon, 2015-05-18 at 12:43 +0200, Florian Weimer wrote:
> Another very recent example is here:
>
> https://lists.fedorahosted.org/pipermail/elfutils-devel/2015-May/004868.html
> 
> > This suggests that people actually rely on the current allocation
> > behavior.  Combined with my previous analysis that applications will
> > start to fail if we remove the fallback and return EINVAL, I now think
> > we need to keep the allocation loop.

I should point out that the above patch isn't in elfutils yet. It is
waiting on how this discussion turns out.

At the moment we simply use ftruncate. The problem that is solved by
using posix_fallocate is that we are about the write to the memory of an
mmapped file. Since ftruncate doesn't guarantee that the backing store
is really there we risk getting a SIGBUS if the disk is full and we
write to a memory area that hasn't been allocated yet. Since this is in
library code, we cannot simply catch the SIGBUS. And we cannot use
fallocate since that doesn't guarantee that the backing store is really
allocated since it depends on whether the underlying file system support
fallocate. As far as I know posix_fallocate is the only way to guarantee
that the file is fully allocated without spurious failures depending on
where the file resides in the file system. And posix_fallocate has been
available since forever with this functionality. We only expect an error
if there was a real error, like ENOSPACE, allocating the file. But if
there is another way to get that guarantee we would be happy to switch
to it.

Cheers,

Mark 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]