Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Nov 2017 10:38:49 -0700
From:      Ngie Cooper <yaneurabeya@gmail.com>
To:        Andriy Gapon <avg@FreeBSD.org>
Cc:        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:  <5199F871-5DE2-4434-87F2-FEF88DB34037@gmail.com>
In-Reply-To: <201711021349.vA2Dn8Yg063559@repo.freebsd.org>
References:  <201711021349.vA2Dn8Yg063559@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help


> On Nov 2, 2017, at 06:49, Andriy Gapon <avg@FreeBSD.org> wrote:
> 
> Author: avg
> Date: Thu Nov  2 13:49:08 2017
> New Revision: 325320
> URL: https://svnweb.freebsd.org/changeset/base/325320
> 
> Log:
>  Disable posix_fallocate(2) for ZFS
> 
>  The generic (naive) implementation of posix_fallocate cannot provide the
>  standard mandated guarantee that overwrites would never fail due to the lack
>  of free space.  The fundamental reason is the copy-on-write architecture
>  of ZFS.  Other features like compression and deduplication can also
>  increase the size difference between the (pre-)allocated dummy content
>  and the future content.
> 
>  So, until ZFS can properly implement the feature it's better to report
>  that it is unsupported rather than providing an ersatz implementation.
>  Please note that EINVAL is used to report that the underlying file system
>  does not support the operation (POSIX.1-2008).
> 
>  illumos and ZoL seem to do the same.
> 
>  MFC after:    3 weeks
>  Sponsored by:    Panzura

It’d be nice if it worked though and was reported via the file system.  Posix suggests it should be, as of 2013: http://austingroupbugs.net/view.php?id=687 .

Need to go poking around and see what’s in freebsd later on tonight. Bug filed: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=223383 .

> Modified:
>  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
> 
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c    Thu Nov  2 12:16:50 2017    (r325319)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c    Thu Nov  2 13:49:08 2017    (r325320)
> @@ -6009,6 +6009,7 @@ struct vop_vector zfs_vnodeops = {
>    .vop_inactive =        zfs_freebsd_inactive,
>    .vop_reclaim =        zfs_freebsd_reclaim,
>    .vop_access =        zfs_freebsd_access,
> +    .vop_allocate =        VOP_EINVAL,
>    .vop_lookup =        zfs_cache_lookup,
>    .vop_cachedlookup =    zfs_freebsd_lookup,
>    .vop_getattr =        zfs_freebsd_getattr,
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5199F871-5DE2-4434-87F2-FEF88DB34037>