[rrd-developers] bus error when disk is full, with mmap & sparse file

Richard Laager rlaager at wiktel.com
Thu Feb 2 08:22:34 CET 2012


On Thu, 2012-02-02 at 01:11 -0600, Richard Laager wrote:
> On Thu, 2012-02-02 at 07:22 +0100, Tobias Oetiker wrote:
> > * with the patch, we get performance and a sort of thin provisioning (files
> >   with holes).
> 
> fallocate() does not create holes. From fallocate(2), "After a
> successful call, subsequent writes into this range are guaranteed not to
> fail because of lack of disk space."
> 
> fallocate() is Linux-specific. The portable equivalent is
> posix_fallocate(). On Linux, that does much the same thing as with this
> patch; it tries fallocate() first and then falls back to zero-filling.
> I'm not sure if that zero filling code performs better or worse than
> your mmap() code.

FWIW, libvirt apparently calls posix_fallocate() #ifdef
HAVE_POSIX_FALLOCATE. Otherwise, #ifdef HAVE_MMAP, it does mmap() + one
memset(). Without HAVE_MMAP, it write()s in 1 MiB blocks.

-- 
Richard
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
Url : http://lists.oetiker.ch/pipermail/rrd-developers/attachments/20120202/00e73824/attachment.pgp 


More information about the rrd-developers mailing list