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

Pawel Jakub Dawidek pjd at FreeBSD.org
Sat Mar 5 22:24:31 UTC 2011


Author: pjd
Date: Sat Mar  5 22:24:31 2011
New Revision: 219316
URL: http://svn.freebsd.org/changeset/base/219316

Log:
  Simplify zvol_remove_minors() a bit.
  
  MFC after:	1 month

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

Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c	Sat Mar  5 21:20:18 2011	(r219315)
+++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c	Sat Mar  5 22:24:31 2011	(r219316)
@@ -753,14 +753,13 @@ zvol_update_volsize(objset_t *os, uint64
 void
 zvol_remove_minors(const char *name)
 {
-	struct g_provider *pp, *pptmp;
 	struct g_geom *gp, *gptmp;
+	struct g_provider *pp;
 	zvol_state_t *zv;
-	char *namebuf;
+	size_t namelen;
+
+	namelen = strlen(name);
 
-	namebuf = kmem_zalloc(strlen(name) + 2, KM_SLEEP);
-	(void) strncpy(namebuf, name, strlen(name));
-	(void) strcat(namebuf, "/");
 	DROP_GIANT();
 	mutex_enter(&zfsdev_state_lock);
 	g_topology_lock();
@@ -772,10 +771,12 @@ zvol_remove_minors(const char *name)
 		zv = pp->private;
 		if (zv == NULL)
 			continue;
-		if (strncmp(namebuf, zv->zv_name, strlen(namebuf)) == 0)
+		if (strcmp(zv->zv_name, name) == 0 ||
+		    (strncmp(zv->zv_name, name, namelen) == 0 &&
+		     zv->zv_name[namelen] == '/')) {
 			(void) zvol_remove_zv(zv);
+		}
 	}
-	kmem_free(namebuf, strlen(name) + 2);
 
 	g_topology_unlock();
 	mutex_exit(&zfsdev_state_lock);


More information about the svn-src-all mailing list