[CFT] ZFS v15 patch (version 3)

Sam Fourman Jr. sfourman at gmail.com
Wed Jul 7 19:51:59 UTC 2010


2010/7/5 Martin Matuska <mm at freebsd.org>:
> Dear FreeBSD community,
>
> there has been a ZFS-related discussion at the meetBSD conference in
> Krakow, Poland and we agreed to push ZFS version 15 (and not 16) to
> -CURRENT.
>
> An upgrade to version 16 gives us no valuable features (to be true, no
> features at all besides ability to import v16 pools).
> As ZFS v15 is already being used in the Solaris 10 enterprise world, we
> can consider it well-tested.
>
> The goal is to provide a filesystem compatible with Solaris 10 update 8,
> which may attract new users to FreeBSD.
> Existing users will get the userquota/groupquota features for ZFS and be
> able to import Solaris 10 update 8 pools.
>
> Import was done by walking through the path of bugfixes from Solaris 10,
> including pre-v15 bugfixes and almost all post-v15 bugfixes.
> Few patches are irrelevant to our code (Solaris-specific features) or
> modify the zvol part, these have been left out.
>
> I have prepared a new patch that includes almost all revision numbers
> Solaris 10 has integrated (we have several of the revisions already in
> our tree).
> Patch also includes updated manpages and may be considered as a
> candidate for head.
>
> Link to the patch information file, including all imported revisions,
> bug-ids and reference to Solairis 10 patch numbers:
> http://people.freebsd.org/~mm/patches/zfs/v15/head-v15-v3.html
> http://people.freebsd.org/~mm/patches/zfs/v15/head-v15-v3.txt
>
> Direct link to the patch:
> http://people.freebsd.org/~mm/patches/zfs/v15/head-v15-v3.patch
>
> The patch applies cleanly against head and stable/8.

using head from 3 hours ago, this patch does not apply cleanly

http://people.freebsd.org/~mm/patches/zfs/v15/head-v15-v3-extension.patch

FNFS# cat sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c.rej
***************
*** 529,540 ****
  	if ((flag & (FSYNC | FDSYNC)) && (count == 1))
  		atomic_dec_32(&zp->z_sync_cnt);

- 	/*
- 	 * Clean up any locks held by this process on the vp.
- 	 */
- 	cleanlocks(vp, ddi_get_pid(), 0);
- 	cleanshares(vp, ddi_get_pid());
-
  	if (!zfs_has_ctldir(zp) && zp->z_zfsvfs->z_vscan &&
  	    ZTOV(zp)->v_type == VREG &&
  	    !(zp->z_phys->zp_flags & ZFS_AV_QUARANTINED) &&
--- 535,540 ----
  	if ((flag & (FSYNC | FDSYNC)) && (count == 1))
  		atomic_dec_32(&zp->z_sync_cnt);

  	if (!zfs_has_ctldir(zp) && zp->z_zfsvfs->z_vscan &&
  	    ZTOV(zp)->v_type == VREG &&
  	    !(zp->z_phys->zp_flags & ZFS_AV_QUARANTINED) &&
***************
*** 1055,1060 ****
  		    &acl_ids)) != 0)
  			goto out;
  		if (zfs_acl_ids_overquota(zfsvfs, &acl_ids)) {
  			error = EDQUOT;
  			goto out;
  		}
--- 1101,1107 ----
  		    &acl_ids)) != 0)
  			goto out;
  		if (zfs_acl_ids_overquota(zfsvfs, &acl_ids)) {
+ 			zfs_acl_ids_free(&acl_ids);
  			error = EDQUOT;
  			goto out;
  		}
***************
*** 2208,2213 ****
  		return (error);
  	}
  	if (zfs_acl_ids_overquota(zfsvfs, &acl_ids)) {
  		zfs_dirent_unlock(dl);
  		ZFS_EXIT(zfsvfs);
  		return (EDQUOT);
--- 2243,2249 ----
  		return (error);
  	}
  	if (zfs_acl_ids_overquota(zfsvfs, &acl_ids)) {
+ 		zfs_acl_ids_free(&acl_ids);
  		zfs_dirent_unlock(dl);
  		ZFS_EXIT(zfsvfs);
  		return (EDQUOT);
***************
*** 3373,3382 ****
  	if (attrzp)
  		VN_RELE(ZTOV(attrzp));

- 	if (aclp) {
  		zfs_acl_free(aclp);
- 		aclp = NULL;
- 	}

  	if (fuidp) {
  		zfs_fuid_info_free(fuidp);
--- 3412,3419 ----
  	if (attrzp)
  		VN_RELE(ZTOV(attrzp));

+ 	if (aclp)
  		zfs_acl_free(aclp);

  	if (fuidp) {
  		zfs_fuid_info_free(fuidp);
FNFS#



-- 

Sam Fourman Jr.
Fourman Networks
http://www.fourmannetworks.com


More information about the freebsd-current mailing list