> On Nov 2, 2017, at 06:49, Andriy Gapon <[email protected]> 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,
> 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to