svn commit: r185846 - projects/gvinum/sys/geom/vinum

Ulf Lilleengen lulf at FreeBSD.org
Wed Dec 10 00:28:31 PST 2008


Author: lulf
Date: Wed Dec 10 08:28:30 2008
New Revision: 185846
URL: http://svn.freebsd.org/changeset/base/185846

Log:
  - When renaming a gvinum volume, try to destroy and recreate the provider with
    the new name if the provider is not in use.
  
  Suggested by:	Rick C. Petty <rick-freebsd2008 -at- kiwi-computer.com>

Modified:
  projects/gvinum/sys/geom/vinum/geom_vinum.c

Modified: projects/gvinum/sys/geom/vinum/geom_vinum.c
==============================================================================
--- projects/gvinum/sys/geom/vinum/geom_vinum.c	Wed Dec 10 08:23:47 2008	(r185845)
+++ projects/gvinum/sys/geom/vinum/geom_vinum.c	Wed Dec 10 08:28:30 2008	(r185846)
@@ -887,6 +887,17 @@ gv_worker(void *arg)
 					    "%s: error code %d", v->name,
 					    newname, err);
 				g_free(newname);
+				/* Destroy and recreate the provider if we can. */
+				if (gv_provider_is_open(v->provider)) {
+					G_VINUM_DEBUG(0, "unable to rename "
+					    "provider to %s: provider in use",
+					    v->name);
+					break;
+				}
+				g_wither_provider(v->provider, ENOENT);
+				v->provider = NULL;
+				gv_post_event(sc, GV_EVENT_SETUP_OBJECTS, sc,
+				    NULL, 0, 0);
 				break;
 
 			case GV_EVENT_RENAME_PLEX:


More information about the svn-src-projects mailing list