From owner-freebsd-geom@FreeBSD.ORG Thu Jan 22 08:30:10 2009 Return-Path: Delivered-To: freebsd-geom@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB635106567A for ; Thu, 22 Jan 2009 08:30:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 4A5968FC0C for ; Thu, 22 Jan 2009 08:30:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id n0M8UAf9049639 for ; Thu, 22 Jan 2009 08:30:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id n0M8UApX049636; Thu, 22 Jan 2009 08:30:10 GMT (envelope-from gnats) Date: Thu, 22 Jan 2009 08:30:10 GMT Message-Id: <200901220830.n0M8UApX049636@freefall.freebsd.org> To: freebsd-geom@FreeBSD.org From: Yoshihiro Ota Cc: Subject: Re: kern/129245: [geom] gcache is more suitable for suffix based provider name X-BeenThere: freebsd-geom@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Yoshihiro Ota List-Id: GEOM-specific discussions and implementations List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jan 2009 08:30:11 -0000 The following reply was made to PR kern/129245; it has been noted by GNATS. From: Yoshihiro Ota To: bug-followup@FreeBSD.org Cc: Subject: Re: kern/129245: [geom] gcache is more suitable for suffix based provider name Date: Thu, 22 Jan 2009 03:24:55 -0500 This is a multi-part message in MIME format. --Multipart=_Thu__22_Jan_2009_03_24_55_-0500_aV.gtuCgOo9pWE9w Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit This will create suffixes, i.e. md2.uzip.cache. Thanks, Hiro --Multipart=_Thu__22_Jan_2009_03_24_55_-0500_aV.gtuCgOo9pWE9w Content-Type: text/x-diff; name="gcache-naming-20090122.diff" Content-Disposition: attachment; filename="gcache-naming-20090122.diff" Content-Transfer-Encoding: 7bit Index: sys/geom/cache/g_cache.c =================================================================== RCS file: /home/ncvs/src/sys/geom/cache/g_cache.c,v retrieving revision 1.2.6.1 diff -u -r1.2.6.1 g_cache.c --- sys/geom/cache/g_cache.c 25 Nov 2008 02:59:29 -0000 1.2.6.1 +++ sys/geom/cache/g_cache.c 22 Jan 2009 08:17:38 -0000 @@ -475,11 +475,11 @@ newpp = NULL; cp = NULL; - G_CACHE_DEBUG(1, "Creating device %s.", md->md_name); + G_CACHE_DEBUG(1, "Creating device %s%s.", pp->name, G_CACHE_SUFFIX); /* Cache size is minimum 100. */ if (md->md_size < 100) { - G_CACHE_DEBUG(0, "Invalid size for device %s.", md->md_name); + G_CACHE_DEBUG(0, "Invalid size for device %s%s.", pp->name, G_CACHE_SUFFIX); return (NULL); } @@ -492,15 +492,9 @@ return (NULL); } - /* Check for duplicate unit. */ - if (g_cache_find_device(mp, (const char *)&md->md_name) != NULL) { - G_CACHE_DEBUG(0, "Provider %s already exists.", md->md_name); - return (NULL); - } - - gp = g_new_geomf(mp, md->md_name); + gp = g_new_geomf(mp, "%s%s", pp->name, G_CACHE_SUFFIX); if (gp == NULL) { - G_CACHE_DEBUG(0, "Cannot create geom %s.", md->md_name); + G_CACHE_DEBUG(0, "Cannot create geom %s%s.", pp->name, G_CACHE_SUFFIX); return (NULL); } gp->softc = NULL; /* for a moment */ @@ -524,9 +518,9 @@ gp->access = g_cache_access; gp->dumpconf = g_cache_dumpconf; - newpp = g_new_providerf(gp, "cache/%s", gp->name); + newpp = g_new_providerf(gp, "%s", gp->name); if (newpp == NULL) { - G_CACHE_DEBUG(0, "Cannot create provider cache/%s.", gp->name); + G_CACHE_DEBUG(0, "Cannot create provider %s.", gp->name); goto fail; } newpp->sectorsize = pp->sectorsize; @@ -709,7 +703,7 @@ gp = g_cache_create(mp, pp, &md, G_CACHE_TYPE_AUTOMATIC); if (gp == NULL) { - G_CACHE_DEBUG(0, "Can't create %s.", md.md_name); + G_CACHE_DEBUG(0, "Can't create %s%s.", pp->name, G_CACHE_SUFFIX); return (NULL); } return (gp); @@ -732,19 +726,13 @@ gctl_error(req, "No '%s' argument", "nargs"); return; } - if (*nargs != 2) { + if (*nargs != 1) { gctl_error(req, "Invalid number of arguments."); return; } strlcpy(md.md_magic, G_CACHE_MAGIC, sizeof(md.md_magic)); md.md_version = G_CACHE_VERSION; - name = gctl_get_asciiparam(req, "arg0"); - if (name == NULL) { - gctl_error(req, "No 'arg0' argument"); - return; - } - strlcpy(md.md_name, name, sizeof(md.md_name)); size = gctl_get_paraml(req, "size", sizeof(*size)); if (size == NULL) { @@ -771,9 +759,9 @@ /* This field is not important here. */ md.md_provsize = 0; - name = gctl_get_asciiparam(req, "arg1"); + name = gctl_get_asciiparam(req, "arg0"); if (name == NULL) { - gctl_error(req, "No 'arg1' argument"); + gctl_error(req, "No 'arg0' argument"); return; } if (strncmp(name, "/dev/", strlen("/dev/")) == 0) @@ -786,7 +774,7 @@ } gp = g_cache_create(mp, pp, &md, G_CACHE_TYPE_MANUAL); if (gp == NULL) { - gctl_error(req, "Can't create %s.", md.md_name); + gctl_error(req, "Can't create %s%s.", pp->name, G_CACHE_SUFFIX); return; } } @@ -818,13 +806,14 @@ gctl_error(req, "No 'arg0' argument"); return; } +#if 0 sc = g_cache_find_device(mp, name); if (sc == NULL) { G_CACHE_DEBUG(1, "Device %s is invalid.", name); gctl_error(req, "Device %s is invalid.", name); return; } - +#endif size = gctl_get_paraml(req, "size", sizeof(*size)); if (size == NULL) { gctl_error(req, "No '%s' argument", "size"); @@ -850,7 +839,6 @@ if (sc->sc_type != G_CACHE_TYPE_AUTOMATIC) return; - strlcpy(md.md_name, name, sizeof(md.md_name)); strlcpy(md.md_magic, G_CACHE_MAGIC, sizeof(md.md_magic)); md.md_version = G_CACHE_VERSION; if ((u_int)*size != 0) Index: sys/geom/cache/g_cache.h =================================================================== RCS file: /home/ncvs/src/sys/geom/cache/g_cache.h,v retrieving revision 1.1.6.1 diff -u -r1.1.6.1 g_cache.h --- sys/geom/cache/g_cache.h 25 Nov 2008 02:59:29 -0000 1.1.6.1 +++ sys/geom/cache/g_cache.h 22 Jan 2009 08:17:38 -0000 @@ -34,6 +34,7 @@ #define G_CACHE_CLASS_NAME "CACHE" #define G_CACHE_MAGIC "GEOM::CACHE" #define G_CACHE_VERSION 1 +#define G_CACHE_SUFFIX ".cache" #ifdef _KERNEL #define G_CACHE_TYPE_MANUAL 0 @@ -113,7 +114,6 @@ struct g_cache_metadata { char md_magic[16]; /* Magic value. */ uint32_t md_version; /* Version number. */ - char md_name[16]; /* Cache value. */ uint32_t md_bsize; /* Cache block size. */ uint32_t md_size; /* Cache size. */ uint64_t md_provsize; /* Provider's size. */ @@ -125,10 +125,9 @@ bcopy(md->md_magic, data, sizeof(md->md_magic)); le32enc(data + 16, md->md_version); - bcopy(md->md_name, data + 20, sizeof(md->md_name)); - le32enc(data + 36, md->md_bsize); - le32enc(data + 40, md->md_size); - le64enc(data + 44, md->md_provsize); + le32enc(data + 20, md->md_bsize); + le32enc(data + 24, md->md_size); + le64enc(data + 28, md->md_provsize); } static __inline void @@ -137,10 +136,9 @@ bcopy(data, md->md_magic, sizeof(md->md_magic)); md->md_version = le32dec(data + 16); - bcopy(data + 20, md->md_name, sizeof(md->md_name)); - md->md_bsize = le32dec(data + 36); - md->md_size = le16dec(data + 40); - md->md_provsize = le64dec(data + 44); + md->md_bsize = le32dec(data + 20); + md->md_size = le16dec(data + 24); + md->md_provsize = le64dec(data + 24); } #endif /* _G_CACHE_H_ */ Index: sbin/geom/class/cache/geom_cache.c =================================================================== RCS file: /home/ncvs/src/sbin/geom/class/cache/geom_cache.c,v retrieving revision 1.3.6.1 diff -u -r1.3.6.1 geom_cache.c --- sbin/geom/class/cache/geom_cache.c 25 Nov 2008 02:59:29 -0000 1.3.6.1 +++ sbin/geom/class/cache/geom_cache.c 22 Jan 2009 08:17:38 -0000 @@ -62,7 +62,7 @@ { 's', "size", &size_configure, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - NULL, "[-v] [-b blocksize] [-s size] name" + NULL, "[-v] [-b blocksize] [-s size] prov" }, { "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL, { @@ -70,14 +70,14 @@ { 's', "size", &size_label, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - NULL, "[-v] [-b blocksize] [-s size] name prov" + NULL, "[-v] [-b blocksize] [-s size] prov" }, { "destroy", G_FLAG_VERBOSE, NULL, { { 'f', "force", NULL, G_TYPE_BOOL }, G_OPT_SENTINEL }, - NULL, "[-fv] name ..." + NULL, "[-fv] prov ..." }, { "dump", 0, cache_main, G_NULL_OPTS, NULL, "prov ..." @@ -88,17 +88,17 @@ { 's', "size", &size_label, G_TYPE_NUMBER }, G_OPT_SENTINEL }, - NULL, "[-v] [-b blocksize] [-s size] name prov" + NULL, "[-v] [-b blocksize] [-s size] prov" }, { "reset", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL, - "[-v] name ..." + "[-v] prov ..." }, { "stop", G_FLAG_VERBOSE, NULL, { { 'f', "force", NULL, G_TYPE_BOOL }, G_OPT_SENTINEL }, - NULL, "[-fv] name ..." + NULL, "[-fv] prov ..." }, G_CMD_SENTINEL }; @@ -138,21 +138,19 @@ intmax_t val; nargs = gctl_get_int(req, "nargs"); - if (nargs != 2) { + if (nargs != 1) { gctl_error(req, "Invalid number of arguments."); return; } strlcpy(md.md_magic, G_CACHE_MAGIC, sizeof(md.md_magic)); md.md_version = G_CACHE_VERSION; - name = gctl_get_ascii(req, "arg0"); - strlcpy(md.md_name, name, sizeof(md.md_name)); val = gctl_get_intmax(req, "blocksize"); md.md_bsize = val; val = gctl_get_intmax(req, "size"); md.md_size = val; - name = gctl_get_ascii(req, "arg1"); + name = gctl_get_ascii(req, "arg0"); md.md_provsize = g_get_mediasize(name); if (md.md_provsize == 0) { fprintf(stderr, "Can't get mediasize of %s: %s.\n", @@ -204,7 +202,6 @@ printf(" Magic string: %s\n", md->md_magic); printf(" Metadata version: %u\n", (u_int)md->md_version); - printf(" Device name: %s\n", md->md_name); printf(" Block size: %u\n", (u_int)md->md_bsize); printf(" Cache size: %u\n", (u_int)md->md_size); printf(" Provider size: %ju\n", (uintmax_t)md->md_provsize); --Multipart=_Thu__22_Jan_2009_03_24_55_-0500_aV.gtuCgOo9pWE9w--