From owner-svn-src-projects@FreeBSD.ORG Sun Jan 9 14:18:17 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 614B8106564A; Sun, 9 Jan 2011 14:18:17 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 370CA8FC17; Sun, 9 Jan 2011 14:18:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p09EIHSY045410; Sun, 9 Jan 2011 14:18:17 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p09EIHHf045408; Sun, 9 Jan 2011 14:18:17 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201101091418.p09EIHHf045408@svn.freebsd.org> From: Alexander Motin Date: Sun, 9 Jan 2011 14:18:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r217194 - projects/graid/head/sys/geom/raid X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Jan 2011 14:18:17 -0000 Author: mav Date: Sun Jan 9 14:18:16 2011 New Revision: 217194 URL: http://svn.freebsd.org/changeset/base/217194 Log: Make provider names format configurable via kern.geom.raid.name_format sysctl/tunable: 0 - raid/rX, 1 - raid/{volume name}. Modified: projects/graid/head/sys/geom/raid/g_raid.c Modified: projects/graid/head/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/head/sys/geom/raid/g_raid.c Sun Jan 9 13:23:45 2011 (r217193) +++ projects/graid/head/sys/geom/raid/g_raid.c Sun Jan 9 14:18:16 2011 (r217194) @@ -68,6 +68,10 @@ TUNABLE_INT("kern.geom.raid.disconnect_o &g_raid_disconnect_on_failure); SYSCTL_UINT(_kern_geom_raid, OID_AUTO, disconnect_on_failure, CTLFLAG_RW, &g_raid_disconnect_on_failure, 0, "Disconnect component on I/O failure."); +static u_int g_raid_name_format = 0; +TUNABLE_INT("kern.geom.raid.name_format", &g_raid_name_format); +SYSCTL_UINT(_kern_geom_raid, OID_AUTO, name_format, CTLFLAG_RW, + &g_raid_name_format, 0, "Providers name format."); #define MSLEEP(ident, mtx, priority, wmesg, timeout) do { \ G_RAID_DEBUG(4, "%s: Sleeping %p.", __func__, (ident)); \ @@ -943,12 +947,25 @@ g_raid_launch_provider(struct g_raid_vol // struct g_raid_disk *disk; struct g_raid_softc *sc; struct g_provider *pp; + char name[G_RAID_MAX_VOLUMENAME]; + int i; sc = vol->v_softc; sx_assert(&sc->sc_lock, SX_LOCKED); g_topology_lock(); - pp = g_new_providerf(sc->sc_geom, "raid/%s", vol->v_name); + /* Try to name provider with volume name. */ + snprintf(name, sizeof(name), "raid/%s", vol->v_name); + if (g_raid_name_format == 0 || vol->v_name[0] == 0 || + g_provider_by_name(name) != NULL) { + /* Otherwise find first free name. */ + for (i = 0; ; i++) { + snprintf(name, sizeof(name), "raid/r%d", i); + if (g_provider_by_name(name) == NULL) + break; + } + } + pp = g_new_providerf(sc->sc_geom, "%s", name); pp->private = vol; pp->mediasize = vol->v_mediasize; pp->sectorsize = vol->v_sectorsize; @@ -1521,6 +1538,8 @@ g_raid_dumpconf(struct sbuf *sb, const c vol = pp->private; g_topology_unlock(); sx_xlock(&sc->sc_lock); + sbuf_printf(sb, "%s%s\n", indent, + vol->v_name); sbuf_printf(sb, "%s%s\n", indent, g_raid_volume_level2str(vol->v_raid_level, vol->v_raid_level_qualifier));