Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 06 Nov 2017 14:52:18 -0800
From:      John Baldwin <jhb@freebsd.org>
To:        Ngie Cooper <yaneurabeya@gmail.com>
Cc:        Andriy Gapon <avg@freebsd.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r325320 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <188800397.5yAOiIDbtG@ralph.baldwin.cx>
In-Reply-To: <5199F871-5DE2-4434-87F2-FEF88DB34037@gmail.com>
References:  <201711021349.vA2Dn8Yg063559@repo.freebsd.org> <5199F871-5DE2-4434-87F2-FEF88DB34037@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, November 02, 2017 10:38:49 AM Ngie Cooper wrote:
>=20
> > On Nov 2, 2017, at 06:49, Andriy Gapon <avg@FreeBSD.org> wrote:
> >=20
> > Author: avg
> > Date: Thu Nov  2 13:49:08 2017
> > New Revision: 325320
> > URL: https://svnweb.freebsd.org/changeset/base/325320
> >=20
> > Log:
> >  Disable posix_fallocate(2) for ZFS
> >=20
> >  The generic (naive) implementation of posix_fallocate cannot provi=
de the
> >  standard mandated guarantee that overwrites would never fail due t=
o the lack
> >  of free space.  The fundamental reason is the copy-on-write archit=
ecture
> >  of ZFS.  Other features like compression and deduplication can als=
o
> >  increase the size difference between the (pre-)allocated dummy con=
tent
> >  and the future content.
> >=20
> >  So, until ZFS can properly implement the feature it's better to re=
port
> >  that it is unsupported rather than providing an ersatz implementat=
ion.
> >  Please note that EINVAL is used to report that the underlying file=
 system
> >  does not support the operation (POSIX.1-2008).
> >=20
> >  illumos and ZoL seem to do the same.
> >=20
> >  MFC after:    3 weeks
> >  Sponsored by:    Panzura
>=20
> It=E2=80=99d be nice if it worked though and was reported via the fil=
e system.  Posix suggests it should be, as of 2013: http://austingroupb=
ugs.net/view.php?id=3D687 .
>=20
> Need to go poking around and see what=E2=80=99s in freebsd later on t=
onight. Bug filed: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D=
223383 .

The austingroup link is just about adding a new pathconf() variable.
posix_fallocate() would seem to be fundamentally incompatible with COW
filesystems and can never work reliably for those.  Even if you reserve=
d N
free blocks somehow until the first write, that doesn't allow multiple
writes to the same file blocks while avoiding block allocation.  falloc=
ate
only makes sense for overwriting filesystems like UFS.

--=20
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?188800397.5yAOiIDbtG>