svn commit: r300024 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs

Andriy Gapon avg at FreeBSD.org
Tue May 17 07:56:06 UTC 2016


Author: avg
Date: Tue May 17 07:56:05 2016
New Revision: 300024
URL: https://svnweb.freebsd.org/changeset/base/300024

Log:
  zfs_ioc_rename: fix a reversed condition
  
  FreeBSD zfs_ioc_rename() has an option, not present upstream, that
  allows to rename snapshots without unmounting them first.  I am not sure
  what is a rationale for that option, but its actual behavior was the
  opposite of the intended behavior.  That is, by default the snapshots
  were not unmounted.
  The option was introduced as part of a large update from upstream in
  r248498.
  
  One of the consequences was a havoc under .zfs/snapshot after the rename.
  The snapshots got new names but were mounted on top of directories with
  old names, so readdir would list the new names, but lookup would still
  find the old mounts.
  
  PR:		209093
  Reported by:	Frédéric VANNIÈRE <f.vanniere at planet-work.com>
  MFC after:	5 days

Modified:
  head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Tue May 17 07:55:49 2016	(r300023)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c	Tue May 17 07:56:05 2016	(r300024)
@@ -3791,7 +3791,7 @@ zfs_ioc_rename(zfs_cmd_t *zc)
 		if (strncmp(zc->zc_name, zc->zc_value, at - zc->zc_name + 1))
 			return (SET_ERROR(EXDEV));
 		*at = '\0';
-		if (zc->zc_objset_type == DMU_OST_ZFS && allow_mounted) {
+		if (zc->zc_objset_type == DMU_OST_ZFS && !allow_mounted) {
 			error = dmu_objset_find(zc->zc_name,
 			    recursive_unmount, at + 1,
 			    recursive ? DS_FIND_CHILDREN : 0);


More information about the svn-src-head mailing list