On Thu, May 17, 2018 at 06:37:56PM -0600, Aaron Bieber wrote:
> On Fri, Mar 02, 2018 at 07:32:04AM -0700, Aaron Bieber wrote:
> > Hi,
> > 
> > Currently disks can only be entered in the [sw]d[0-9][0-9] format at the
> > "Which disk is the root disk?" prompt. This is great for humans, but
> > things get tricky when doing an autoinstall upgrade on systems where
> > connected disks change frequently.
> > 
> > This diff lets you put the DUID in the response file.
> > 
> > If anyone has a better way to determine the disk from the duid, I am all
> > ears :D
> > 
> > Cheers,
> > Aaron
> > 
> 
> Thanks to tb@, kn@, Philipp Buehler and phy1729 on #metabug! I tested a
> bsd.rd with an auto-upgrade response file. Once with a duid and once
> with a disk name. Both worked.
> 
> I have an OK from tb@ unless anyone objects.
> 
> The diff has been distilled down to this:
> 

Paste fail, here is the latest diff:

Index: distrib/miniroot/install.sub
===================================================================
RCS file: /var/cvs/src/distrib/miniroot/install.sub,v
retrieving revision 1.1067
diff -u -p -r1.1067 install.sub
--- distrib/miniroot/install.sub        7 May 2018 10:44:01 -0000       1.1067
+++ distrib/miniroot/install.sub        18 May 2018 00:16:34 -0000
@@ -336,6 +336,12 @@ get_ifs() {
        done
 }
 
+# checks whether $1 is a valid duid
+is_duid() {
+       ((${#1} == 16)) && [[ $1 == +([0-9a-f]) ]] && return 0
+       return 1
+}
+
 # Return the device name of the disk device $1, which may be a disklabel UID.
 get_dkdev_name() {
        local _dev=${1#/dev/} _d
@@ -2231,7 +2237,8 @@ get_rootinfo() {
                case $resp in
                "?")    diskinfo $(get_dkdevs);;
                '')     ;;
-               *)      if isin "$resp" $(get_dkdevs); then
+               *)      $AUTO && is_duid "$resp" && resp=$(get_dkdev_name $resp)
+                       if isin "$resp" $(get_dkdevs); then
                                [[ $MODE == install ]] && break
                                is_rootdisk "$resp" && break
                                echo "$resp is not a valid root disk."

-- 
PGP: 0x1F81112D62A9ADCE / 3586 3350 BFEA C101 DB1A  4AF0 1F81 112D 62A9 ADCE

Reply via email to