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