Re: svn commit: r345480 - in head/sys: conf geom geom/label

2019-04-08 Thread Jia-Shiun Li
On Mon, Apr 8, 2019 at 12:34 AM Ian Lepore  wrote:

> Oops, sorry abou that, I forgot to add the new source file to the
> module makefile.  Should be fixed with r346013.
>
>
Tested on r346022 and it is back to normal.

Thanks,
Jia-Shiun.
___
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-unsubscr...@freebsd.org"


Re: svn commit: r345480 - in head/sys: conf geom geom/label

2019-04-07 Thread Ian Lepore
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.coptional 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 
> > 
> > -#defineFLASHMAP_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

Re: svn commit: r345480 - in head/sys: conf geom geom/label

2019-04-07 Thread Jia-Shiun Li
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.coptional 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 
>
> -#defineFLASHMAP_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;
> @@ -16

svn commit: r345480 - in head/sys: conf geom geom/label

2019-03-24 Thread Ian Lepore
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.coptional 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 
 
-#defineFLASHMAP_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