[Bug 263407] RC3 Guided ZFS on root with encryption unmountable

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 21 Apr 2022 02:02:57 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263407

Kyle Evans <kevans@freebsd.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |allanjude@FreeBSD.org,
                   |                            |freqlabs@FreeBSD.org,
                   |                            |kevans@freebsd.org,
                   |                            |mav@FreeBSD.org

--- Comment #10 from Kyle Evans <kevans@freebsd.org> ---
(In reply to Martin Matuska from comment #7)

To summarize some of what I've discovered:

loader fails to read it because we process the first datablk and then still
have 8 bytes left to read.  Note the zdb output:

obj=14 dataset=zroot/ROOT/default path=/boot type=20 bonustype=44
obj=77 dataset=zroot/ROOT/default path=/boot/kernel type=20 bonustype=44
obj=16532 dataset=zroot/ROOT/default path=/boot/kernel/geom_eli.ko type=19
bonustype=44

    Object  lvl   iblk   dblk  dsize  dnsize  lsize   %full  type
     16532    1   128K   128K    72K     512   128K  100.00  ZFS plain file
(K=inherit) (Z=inherit=lz4)
                                               168   bonus  System attributes
        dnode flags: USED_BYTES USERUSED_ACCOUNTED USEROBJUSED_ACCOUNTED 
        dnode maxblkid: 0
        uid     0
        gid     0
        atime   Wed Apr 20 16:36:09 2022
        mtime   Thu Apr 14 05:24:57 2022
        ctime   Wed Apr 20 16:36:13 2022
        crtime  Thu Apr 14 05:24:57 2022
        gen     105
        mode    100555
        size    131080
        parent  77
        links   1
        pflags  40800000104
Indirect blocks:
               0 L0 0:12eb72000:12000 20000L/12000P F=1 B=105/105
cksum=16fe63abceef:30eb7f3af17191f:2407cd8cfd04b694:d5743be33ba51582

                segment [0000000000000000, 0000000000020000) size  128K

There's one indirect block that consists of 128k data, but the file size is
128k + 8 bytes. zdb doesn't indicate any embedded data, so it's not clear where
this remaining 8 bytes comes from but it seems likely that we're just
mishandling this situation. When you copy the file away, you get this instead,
which loader *can* grok:

obj=14 dataset=zroot/ROOT/default path=/boot type=20 bonustype=44
obj=115 dataset=zroot/ROOT/default path=/boot/modules type=20 bonustype=44
obj=65597 dataset=zroot/ROOT/default path=/boot/modules/geom_eli.ko type=19
bonustype=44

    Object  lvl   iblk   dblk  dsize  dnsize  lsize   %full  type
     65597    2   128K   128K    80K     512   256K   50.00  ZFS plain file
(K=inherit) (Z=inherit=lz4)
                                               168   bonus  System attributes
        dnode flags: USED_BYTES USERUSED_ACCOUNTED USEROBJUSED_ACCOUNTED 
        dnode maxblkid: 1
        uid     0
        gid     0
        atime   Wed Apr 20 17:37:15 2022
        mtime   Wed Apr 20 17:37:15 2022
        ctime   Wed Apr 20 17:37:15 2022
        crtime  Wed Apr 20 17:37:15 2022
        gen     887
        mode    100555
        size    131080
        parent  115
        links   1
        pflags  40800000104
Indirect blocks:
               0 L1  0:20481000:1000 20000L/1000P F=1 B=887/887
cksum=874e89542b:1f3270c7c16ce:39b480e80eca90d:75b552339f0fcd1b
               0  L0 0:a0143000:12000 20000L/12000P F=1 B=887/887
cksum=16fe63abceef:30eb7f3af17191f:2407cd8cfd04b694:d5743be33ba51582

                segment [0000000000000000, 0000000000020000) size  128K

I don't understand how everything's stored in the first scenario, but I'm
adding some more zfs people that can maybe elucidate.

-- 
You are receiving this mail because:
You are the assignee for the bug.