Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 May 2016 07:56:05 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r300024 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Message-ID:  <201605170756.u4H7u5QT043563@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605170756.u4H7u5QT043563>