From owner-svn-src-head@freebsd.org Sun Apr 7 16:34:28 2019 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F3AC91563DBA for ; Sun, 7 Apr 2019 16:34:27 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound1.eu.mailhop.org (outbound1.eu.mailhop.org [52.28.251.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4F39896C4A for ; Sun, 7 Apr 2019 16:34:27 +0000 (UTC) (envelope-from ian@freebsd.org) ARC-Seal: i=1; a=rsa-sha256; t=1554654859; cv=none; d=outbound.mailhop.org; s=arc-outbound20181012; b=s2DouP0pmS6w2+dQPF1VpyBmk7bhI7TuZ7D6bAq4vYosHEHpo25R851jD/7F9cBUEeI6onXuZSlEV hv0FSoZ7c8D2h7DBq6E4B0C8uKdXdn57nbOLDdjt9OrP4jhLUvUDdSnBed2D7Muclnglag8IBP7yXn li9xrVD9cER94ouZHbA8ayhAsFH9Ci1dz+IaUovbfTmJqnNLscE1CzPRxT2EHKlJtdUchjWuXsrI8q 7TxJjvpBnVxeuzZMaCQTDEDnXKraHhkmjOJ2ah7d31b74VrcRiCKsetT5mMALPPnwm9pBpXk6bir/D 4u+ioJR80eB24aMnF3JmXDrzv2Lsa/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=arc-outbound20181012; h=content-transfer-encoding:mime-version:content-type:references:in-reply-to: date:cc:to:from:subject:message-id:dkim-signature:from; bh=aUDWfUV9/PDB7uDBBM/m8NY9DdwZRD/c63+Uua/QbsE=; b=TLuxz4fQXL+biz1RqV/F6ypLlAYB85ACz/uh5Dm5bqh70x6wiWIGr4OWNasKacezfHWsMJNqBH9R2 7NTfOLWY2g7ayVhA+iy9Ij2UvAuWGqkjbafeO0xK6aMxLHOBa1g4qU6WuaR64Y0eVaYs+/sGD46Dks vVLP/KNEkKmmL/vwVxAxgT10a0/r1W4YfEbtlmrs1M9Nv8QdgrcG8rpDYrzYKRaitS31mbfm6TWXJF X6k9kHxuJNTDss6SERCW3pSPJUVTfBM1g2N8YNCWiyWHeLWgY5clFFsLNgAYWy93LluIRRI2qKhBKP ZBGQv2bQHmVd3GDxLxepXOhdzKprsKg== ARC-Authentication-Results: i=1; outbound3.eu.mailhop.org; spf=softfail smtp.mailfrom=freebsd.org smtp.remote-ip=67.177.211.60; dmarc=none header.from=freebsd.org; arc=none header.oldest-pass=0; DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outbound.mailhop.org; s=dkim-high; h=content-transfer-encoding:mime-version:content-type:references:in-reply-to: date:cc:to:from:subject:message-id:from; bh=aUDWfUV9/PDB7uDBBM/m8NY9DdwZRD/c63+Uua/QbsE=; b=BP0vnSCreb/OlhO8pIjjIEkxociybwDHUQ5pazqw0TS3sb4AfTOlNQ08Gt2CChPH474idyyZ6n1oO kdfIsihbHTetVitJ1CrE+oDA8EDpgY98r+VIzLSjfEJHGlS4en+AFvq7rCz+Z6i/Xp2hwV8mah+QYV 907+e7dScn+xKx4aUqvXSWNDWXCoKPgtBshyaau5u7J7cXGcJGbQhZ7g9+lp9+odz2sp8Ywd3vYkbz OlBaFZYLgeQuna9bMey4cGwb/M4myCICMV4ThJqEGJdFzV0rRJwX9uyJHRIwCBoP+/Z/j5nR+b0Gtp FpSdpsLWD0mmc8dtir2m1S6VxXfqFCw== X-MHO-RoutePath: aGlwcGll X-MHO-User: fbba9b4d-5952-11e9-908b-352056dbf2de X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Originating-IP: 67.177.211.60 X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (unknown [67.177.211.60]) by outbound3.eu.mailhop.org (Halon) with ESMTPSA id fbba9b4d-5952-11e9-908b-352056dbf2de; Sun, 07 Apr 2019 16:34:16 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id x37GYF5B010967; Sun, 7 Apr 2019 10:34:15 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <832a6f77ed5e48687ba2b265c1cbb37f7d624ead.camel@freebsd.org> Subject: Re: svn commit: r345480 - in head/sys: conf geom geom/label From: Ian Lepore To: Jia-Shiun Li Cc: svn-src-head@freebsd.org Date: Sun, 07 Apr 2019 10:34:15 -0600 In-Reply-To: References: <201903241911.x2OJBj6x024102@repo.freebsd.org> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5 FreeBSD GNOME Team Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4F39896C4A X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.99 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.99)[-0.990,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Apr 2019 16:34:28 -0000 On Sun, 2019-04-07 at 22:53 +0800, Jia-Shiun Li wrote: > Hi Ian, > > after this commit it is not possible to load geom_label as module. > Loading geom_flashmap does not help. > > # uname -a > FreeBSD 4cbsd 13.0-CURRENT FreeBSD 13.0-CURRENT r345759 MINIMAL- > NODEBUG > amd64 > # kldload /boot/MINIMAL-NODEBUG/geom_label.ko > kldload: an error occurred while loading module > /boot/MINIMAL-NODEBUG/geom_label.ko. Please check dmesg(8) for more > details. > # dmesg | tail -2 > link_elf_obj: symbol g_label_flashmap undefined > linker_load_file: /boot/MINIMAL-NODEBUG/geom_label.ko - unsupported > file > type > # > > I used ufsid label to locate root fs, and have to fall back to > partition > name for now. > > /boot/loader.conf: > #vfs.root.mountfrom="ufs:/dev/ufsid/54a0236e063b0242" > vfs.root.mountfrom="ufs:/dev/ada0s4a" > > > - Jia-Shiun. > Oops, sorry abou that, I forgot to add the new source file to the module makefile. Should be fixed with r346013. -- Ian > On Mon, Mar 25, 2019 at 3:12 AM Ian Lepore wrote: > > > Author: ian > > Date: Sun Mar 24 19:11:45 2019 > > New Revision: 345480 > > URL: https://svnweb.freebsd.org/changeset/base/345480 > > > > Log: > > Support device-independent labels for geom_flashmap slices. > > > > While geom_flashmap has always supported label names for its > > slices, it > > does > > so by appending "s.labelname" to the provider device name, > > meaning you > > still > > have to know the name and unit of the hardware device to use the > > labels. > > > > These changes add support for device-independent geom_flashmap > > labels, > > using > > the standard geom_label infrastructure. geom_flashmap now creates > > a softc > > struct attached to its geom, and as it creates slices it stores > > the label > > into an array in the softc. The new geom_label_flashmap uses > > those labels > > when tasting a geom_flashmap provider. > > > > Differential Revision: https://reviews.freebsd.org/D19535 > > > > Added: > > head/sys/geom/geom_flashmap.h (contents, props changed) > > head/sys/geom/label/g_label_flashmap.c (contents, props > > changed) > > Modified: > > head/sys/conf/files > > head/sys/geom/geom_flashmap.c > > head/sys/geom/label/g_label.c > > head/sys/geom/label/g_label.h > > > > Modified: head/sys/conf/files > > > > =================================================================== > > =========== > > --- head/sys/conf/files Sun Mar 24 19:09:50 2019 (r345479) > > +++ head/sys/conf/files Sun Mar 24 19:11:45 2019 (r345480) > > @@ -3628,6 +3628,7 @@ geom/journal/g_journal.c optional > > geom_journal > > geom/journal/g_journal_ufs.c optional geom_journal > > geom/label/g_label.c optional geom_label | > > geom_label_gpt > > geom/label/g_label_ext2fs.c optional geom_label > > +geom/label/g_label_flashmap.c optional geom_label > > geom/label/g_label_iso9660.c optional geom_label > > geom/label/g_label_msdosfs.c optional geom_label > > geom/label/g_label_ntfs.c optional geom_label > > > > Modified: head/sys/geom/geom_flashmap.c > > > > =================================================================== > > =========== > > --- head/sys/geom/geom_flashmap.c Sun Mar 24 19:09:50 2019 > > (r345479) > > +++ head/sys/geom/geom_flashmap.c Sun Mar 24 19:11:45 2019 > > (r345480) > > @@ -39,13 +39,12 @@ __FBSDID("$FreeBSD$"); > > #include > > > > #include > > -#include > > #include > > +#include > > +#include > > > > #include > > > > -#define FLASHMAP_CLASS_NAME "Flashmap" > > - > > struct g_flashmap_slice { > > off_t sl_start; > > off_t sl_end; > > @@ -71,8 +70,8 @@ static g_taste_t g_flashmap_taste; > > > > static int g_flashmap_load(device_t dev, struct g_provider *pp, > > flash_slicer_t slicer, struct g_flashmap_head *head); > > -static int g_flashmap_modify(struct g_geom *gp, const char > > *devname, > > - int secsize, struct g_flashmap_head *slices); > > +static int g_flashmap_modify(struct g_flashmap *gfp, struct g_geom > > *gp, > > + const char *devname, int secsize, struct g_flashmap_head > > *slices); > > static void g_flashmap_print(struct g_flashmap_slice *slice); > > > > MALLOC_DECLARE(M_FLASHMAP); > > @@ -88,8 +87,8 @@ g_flashmap_print(struct g_flashmap_slice *slice) > > } > > > > static int > > -g_flashmap_modify(struct g_geom *gp, const char *devname, int > > secsize, > > - struct g_flashmap_head *slices) > > +g_flashmap_modify(struct g_flashmap *gfp, struct g_geom *gp, > > + const char *devname, int secsize, struct g_flashmap_head > > *slices) > > { > > struct g_flashmap_slice *slice; > > int i, error; > > @@ -114,6 +113,8 @@ g_flashmap_modify(struct g_geom *gp, const char > > *devna > > > > i = 0; > > STAILQ_FOREACH(slice, slices, sl_link) { > > + free(__DECONST(void *, gfp->labels[i]), > > M_FLASHMAP); > > + gfp->labels[i] = strdup(slice->sl_name, > > M_FLASHMAP); > > error = g_slice_config(gp, i++, G_SLICE_CONFIG_SET, > > slice->sl_start, > > slice->sl_end - slice->sl_start + 1, > > @@ -153,6 +154,7 @@ g_flashmap_taste(struct g_class *mp, struct > > g_provider > > struct g_consumer *cp; > > struct g_flashmap_head head; > > struct g_flashmap_slice *slice, *slice_temp; > > + struct g_flashmap *gfp; > > flash_slicer_t slicer; > > device_t dev; > > int i, size; > > @@ -164,7 +166,8 @@ g_flashmap_taste(struct g_class *mp, struct > > g_provider > > strcmp(pp->geom->class->name, G_DISK_CLASS_NAME) != 0) > > return (NULL); > > > > - gp = g_slice_new(mp, FLASH_SLICES_MAX_NUM, pp, &cp, NULL, > > 0, NULL); > > + gp = g_slice_new(mp, FLASH_SLICES_MAX_NUM, pp, &cp, > > (void**)&gfp, > > + sizeof(struct g_flashmap), NULL); > > if (gp == NULL) > > return (NULL); > > > > @@ -186,7 +189,7 @@ g_flashmap_taste(struct g_class *mp, struct > > g_provider > > if (g_flashmap_load(dev, pp, slicer, &head) == 0) > > break; > > > > - g_flashmap_modify(gp, cp->provider->name, > > + g_flashmap_modify(gfp, gp, cp->provider->name, > > cp->provider->sectorsize, &head); > > } while (0); > > > > > > Added: head/sys/geom/geom_flashmap.h > > > > =================================================================== > > =========== > > --- /dev/null 00:00:00 1970 (empty, because file is newly > > added) > > +++ head/sys/geom/geom_flashmap.h Sun Mar 24 19:11:45 2019 > > (r345480) > > @@ -0,0 +1,39 @@ > > +/*- > > + * SPDX-License-Identifier: BSD-2-Clause > > + * > > + * Copyright (c) 2019 Ian Lepore > > + * > > + * Redistribution and use in source and binary forms, with or > > without > > + * modification, are permitted provided that the following > > conditions > > + * are met: > > + * 1. Redistributions of source code must retain the above > > copyright > > + * notice, this list of conditions and the following > > disclaimer. > > + * 2. Redistributions in binary form must reproduce the above > > copyright > > + * notice, this list of conditions and the following disclaimer > > in the > > + * documentation and/or other materials provided with the > > distribution. > > + * > > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS > > IS'' AND > > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED > > TO, THE > > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > > PARTICULAR > > PURPOSE > > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS > > BE LIABLE > > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > > CONSEQUENTIAL > > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > > SUBSTITUTE GOODS > > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > > INTERRUPTION) > > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > > CONTRACT, > > STRICT > > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING > > IN ANY > > WAY > > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > > POSSIBILITY OF > > + * SUCH DAMAGE. > > + * > > + * $FreeBSD$ > > + */ > > + > > +#ifndef _GEOM_GEOM_FLASHMAP_H_ > > + > > +#define FLASHMAP_CLASS_NAME "Flashmap" > > + > > +struct g_flashmap { > > + const char *labels[FLASH_SLICES_MAX_NUM]; > > +}; > > + > > +#endif > > + > > > > Modified: head/sys/geom/label/g_label.c > > > > =================================================================== > > =========== > > --- head/sys/geom/label/g_label.c Sun Mar 24 19:09:50 2019 > > (r345479) > > +++ head/sys/geom/label/g_label.c Sun Mar 24 19:11:45 2019 > > (r345480) > > @@ -95,6 +95,7 @@ const struct g_label_desc *g_labels[] = { > > &g_label_reiserfs, > > &g_label_ntfs, > > &g_label_disk_ident, > > + &g_label_flashmap, > > #endif > > NULL > > }; > > > > Modified: head/sys/geom/label/g_label.h > > > > =================================================================== > > =========== > > --- head/sys/geom/label/g_label.h Sun Mar 24 19:09:50 2019 > > (r345479) > > +++ head/sys/geom/label/g_label.h Sun Mar 24 19:11:45 2019 > > (r345480) > > @@ -88,6 +88,7 @@ extern struct g_label_desc g_label_ntfs; > > extern struct g_label_desc g_label_gpt; > > extern struct g_label_desc g_label_gpt_uuid; > > extern struct g_label_desc g_label_disk_ident; > > +extern struct g_label_desc g_label_flashmap; > > > > extern void g_label_rtrim(char *label, size_t size); > > #endif /* _KERNEL */ > > > > Added: head/sys/geom/label/g_label_flashmap.c > > > > =================================================================== > > =========== > > --- /dev/null 00:00:00 1970 (empty, because file is newly > > added) > > +++ head/sys/geom/label/g_label_flashmap.c Sun Mar 24 19:11:45 > > 2019 > > (r345480) > > @@ -0,0 +1,77 @@ > > +/*- > > + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD > > + * > > + * Copyright (c) 2019 Ian Lepore > > + * > > + * Redistribution and use in source and binary forms, with or > > without > > + * modification, are permitted provided that the following > > conditions > > + * are met: > > + * 1. Redistributions of source code must retain the above > > copyright > > + * notice, this list of conditions and the following > > disclaimer. > > + * 2. Redistributions in binary form must reproduce the above > > copyright > > + * notice, this list of conditions and the following disclaimer > > in the > > + * documentation and/or other materials provided with the > > distribution. > > + * > > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS > > IS'' AND > > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED > > TO, THE > > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > > PARTICULAR > > PURPOSE > > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS > > BE LIABLE > > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > > CONSEQUENTIAL > > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > > SUBSTITUTE GOODS > > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > > INTERRUPTION) > > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > > CONTRACT, > > STRICT > > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING > > IN ANY > > WAY > > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE > > POSSIBILITY OF > > + * SUCH DAMAGE. > > + */ > > + > > +#include > > +__FBSDID("$FreeBSD$"); > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +#include > > +#include > > +#include > > +#include > > + > > +#define G_LABEL_FLASHMAP_SLICE_DIR "flash" > > + > > +static void > > +g_label_flashmap_taste(struct g_consumer *cp, char *label, size_t > > size) > > +{ > > + struct g_flashmap *gfp; > > + struct g_slicer *gsp; > > + struct g_provider *pp; > > + > > + g_topology_assert_not(); > > + > > + pp = cp->provider; > > + label[0] = '\0'; > > + > > + /* We taste only partitions handled by flashmap */ > > + if (strncmp(pp->geom->class->name, FLASHMAP_CLASS_NAME, > > + sizeof(FLASHMAP_CLASS_NAME)) != 0) > > + return; > > + > > + gsp = (struct g_slicer *)pp->geom->softc; > > + gfp = (struct g_flashmap *)gsp->softc; > > + > > + /* If it's handled by flashmap it should have a label, but > > be > > safe. */ > > + if (gfp->labels[pp->index] == NULL) > > + return; > > + > > + strlcpy(label, gfp->labels[pp->index], size); > > +} > > + > > +struct g_label_desc g_label_flashmap = { > > + .ld_taste = g_label_flashmap_taste, > > + .ld_dir = G_LABEL_FLASHMAP_SLICE_DIR, > > + .ld_enabled = 1 > > +}; > > + > > +G_LABEL_INIT(flashmap, g_label_flashmap, "Create device nodes for > > Flashmap labels"); > > _______________________________________________ > > svn-src-head@freebsd.org mailing list > > https://lists.freebsd.org/mailman/listinfo/svn-src-head > > To unsubscribe, send any mail to " > > svn-src-head-unsubscribe@freebsd.org" > >