svn commit: r325320 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Ngie Cooper
yaneurabeya at gmail.com
Thu Nov 2 17:38:52 UTC 2017
> On Nov 2, 2017, at 06:49, Andriy Gapon <avg at 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,
>
More information about the svn-src-all
mailing list