From owner-svn-src-head@freebsd.org Sun Apr 7 14:54:04 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 68D7E1557E76 for ; Sun, 7 Apr 2019 14:54:04 +0000 (UTC) (envelope-from jiashiun@gmail.com) Received: from mail-vs1-xe33.google.com (mail-vs1-xe33.google.com [IPv6:2607:f8b0:4864:20::e33]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6111593377; Sun, 7 Apr 2019 14:54:02 +0000 (UTC) (envelope-from jiashiun@gmail.com) Received: by mail-vs1-xe33.google.com with SMTP id t78so6153283vsc.1; Sun, 07 Apr 2019 07:54:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=EOBuwZobIlnniiihWt+Dlujx/uVW5r4DnzhbmocvjTA=; b=LFwgYlrMVR0buWfDo4YJG8Lw3yZGKSIdqdrN5BhvYLj6g0hMELG9D4nLFy1l7Rl7hn arlTnYRPamcHq2P/qm7zO5ZsXiGjSu8nx+nKwZIDNhxlLRGqmQ68WkJ0+vttdZRsZxgF Yak0otnXLP4a8R9VzXKOeRJa/ir2zApeCtYp12VZL0htGs8a4tOepeD81M7t5FoMUdbo 9xvDEwnU09jXG30Kt6QJu6EQrOLB2h7nzkyEsXJm61KFQXj9DCU6Re8kvLq2MYO9VNlg P6GJPUi0sztCzk/NmKVI+iKO8PznKGtbFDZ64/2ROKjraWMqSYu/qg9nr5HGXXUFKkvh 7Uow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EOBuwZobIlnniiihWt+Dlujx/uVW5r4DnzhbmocvjTA=; b=m9U6IMIIQK29PzfIlSrsw0ZCdSvB70Q42PAH6ppngKqpXbQfrkV1Mj9qaQaSnOIYRI Hdy8rD6ggcXqvL3QwtdMaSq6mP21P+fzOae5BDAqldVHHmfDOP1yIJPadCHdTE83sIVF Qhx7oOvdaRRiE9aGs9hU36hVXYal6yI9YJVC22q9kvvTKweaGoakptwgd0OswssWaj0Z lU1Pp9GiFnKB64cmEEs0ikBwRrnvwuUvzzNKeGdc383my1I0rqMkrTKDvd48gwccWVjZ qYuF6Gvobja5IlXpvb51y66DeEdF90ABnTzUV1mPy/T5WJASYpGSzQpYxPOZjl8Sf98L 3myA== X-Gm-Message-State: APjAAAXgHFk3G6mevxlBALubp+y5pNnqg6jytnYTeYAMYU2nAxaZCKgo S5+gNloW7HCBWu0x2VFthxg3h6X7U1rv7zchbvxKwxM5dBo= X-Google-Smtp-Source: APXvYqztc6FQlWkCK4kG7sSPDgtZcQSur6mVPwyjCtVZ2NXpnwntEiolyhrc7+xPRwIZOCRLo1Zi599dwGGvyKEqz7k= X-Received: by 2002:a67:1345:: with SMTP id 66mr13706215vst.30.1554648841249; Sun, 07 Apr 2019 07:54:01 -0700 (PDT) MIME-Version: 1.0 References: <201903241911.x2OJBj6x024102@repo.freebsd.org> In-Reply-To: <201903241911.x2OJBj6x024102@repo.freebsd.org> From: Jia-Shiun Li Date: Sun, 7 Apr 2019 22:53:35 +0800 Message-ID: Subject: Re: svn commit: r345480 - in head/sys: conf geom geom/label To: Ian Lepore Cc: svn-src-head@freebsd.org X-Rspamd-Queue-Id: 6111593377 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=LFwgYlrM; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of jiashiun@gmail.com designates 2607:f8b0:4864:20::e33 as permitted sender) smtp.mailfrom=jiashiun@gmail.com X-Spamd-Result: default: False [-6.80 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCVD_TLS_LAST(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; MX_GOOD(-0.01)[cached: alt3.gmail-smtp-in.l.google.com]; RCVD_IN_DNSWL_NONE(0.00)[3.3.e.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; NEURAL_HAM_SHORT(-0.84)[-0.842,0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; IP_SCORE(-2.95)[ip: (-9.57), ipnet: 2607:f8b0::/32(-2.94), asn: 15169(-2.18), country: US(-0.06)]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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 14:54:04 -0000 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. 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" >