serial for softraid devices

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

serial for softraid devices

Jiri B.
Hi,

I have couple of softraid devices available in a box and when I do upgrade
I always have to check and not to make mistake which softraid device
I want to use as root disk.

If OpenBSD would have serial for softraid device I would just need to remember
the serial for my root disk.

This is similar output what install.sub's diskinfo() returns in installer:

# bioctl softraid0 | awk '$NF == "RAID1" { cmd=sprintf("bioctl -q %s",$(NF-1)); system(cmd); }'              
sd5: <OPENBSD, SR RAID 1, 006>, serial (unknown)
sd6: <OPENBSD, SR RAID 1, 006>, serial (unknown)
sd7: <OPENBSD, SR RAID 1, 006>, serial (unknown)
sd8: <OPENBSD, SR RAID 1, 006>, serial (unknown)
sd9: <OPENBSD, SR RAID 1, 006>, serial (unknown)

Is it because bd_serial is not implemented for softraid devices?

$ ag bd_serial /usr/src/sys/
/usr/src/sys/dev/ic/ami.c
2037:                   strlcpy(bd->bd_serial, ser, sizeof(bd->bd_serial));
2268:                           bzero(&bd->bd_serial, sizeof(bd->bd_serial));
2287:                           strlcpy(bd->bd_serial, ser,
2288:                               sizeof(bd->bd_serial));

/usr/src/sys/dev/ic/ciss.c
1068:                   bd->bd_serial[0] = '\0';
1090:                   strlcpy(bd->bd_serial, pdid->serial,
1091:                       sizeof(bd->bd_serial));

/usr/src/sys/dev/ic/mpi.c
3386:   /* bd_serial[32]; */

/usr/src/sys/dev/pci/arc.c
2256:   strlcpy(bd->bd_serial, serial, sizeof(bd->bd_serial));

/usr/src/sys/dev/pci/mpii.c
3596:   scsi_strvis(bd->bd_serial, ppg->serial, sizeof(ppg->serial));

/usr/src/sys/dev/biovar.h
111:    char            bd_serial[32];  /* serial number */

Jiri

Reply | Threaded
Open this post in threaded view
|

Re: serial for softraid devices

Alexander Hall
On Tue, Sep 04, 2018 at 03:04:15PM +0000, Jiri B. wrote:
> Hi,
>
> I have couple of softraid devices available in a box and when I do upgrade
> I always have to check and not to make mistake which softraid device
> I want to use as root disk.

FWIW, the upgrade won't proceed until you pick a disk that has something
like a root file system on it.  There is a fair chance that you can find
the proper disk by just pressing enter a number of times, unless you
have multiple root filesystems (as I assume could be the case with
diskless setups).

See is_rootdisk() in /usr/src/distrib/miniroot/install.sub:

$ sed '/^is_rootdisk/,/^}$/!d' /usr/src/distrib/miniroot/install.sub                                                                                                                
is_rootdisk() {
        local _d=$1 _rc=1

        (
                make_dev $_d
                if disklabel $_d | grep -q '^  a: .*4\.2BSD ' &&
                        mount -t ffs -r /dev/${_d}a /mnt; then
                        ls -d /mnt/{bin,dev,etc,home,mnt,root,sbin,tmp,usr,var}
                        _rc=$?
                        umount -f /mnt
                fi
                rm -f /dev/{r,}$_d?
                return $_rc
        ) >/dev/null 2>&1
}

/Alexander

> If OpenBSD would have serial for softraid device I would just need to remember
> the serial for my root disk.
>
> This is similar output what install.sub's diskinfo() returns in installer:
>
> # bioctl softraid0 | awk '$NF == "RAID1" { cmd=sprintf("bioctl -q %s",$(NF-1)); system(cmd); }'              
> sd5: <OPENBSD, SR RAID 1, 006>, serial (unknown)
> sd6: <OPENBSD, SR RAID 1, 006>, serial (unknown)
> sd7: <OPENBSD, SR RAID 1, 006>, serial (unknown)
> sd8: <OPENBSD, SR RAID 1, 006>, serial (unknown)
> sd9: <OPENBSD, SR RAID 1, 006>, serial (unknown)
>
> Is it because bd_serial is not implemented for softraid devices?
>
> $ ag bd_serial /usr/src/sys/
> /usr/src/sys/dev/ic/ami.c
> 2037:                   strlcpy(bd->bd_serial, ser, sizeof(bd->bd_serial));
> 2268:                           bzero(&bd->bd_serial, sizeof(bd->bd_serial));
> 2287:                           strlcpy(bd->bd_serial, ser,
> 2288:                               sizeof(bd->bd_serial));
>
> /usr/src/sys/dev/ic/ciss.c
> 1068:                   bd->bd_serial[0] = '\0';
> 1090:                   strlcpy(bd->bd_serial, pdid->serial,
> 1091:                       sizeof(bd->bd_serial));
>
> /usr/src/sys/dev/ic/mpi.c
> 3386:   /* bd_serial[32]; */
>
> /usr/src/sys/dev/pci/arc.c
> 2256:   strlcpy(bd->bd_serial, serial, sizeof(bd->bd_serial));
>
> /usr/src/sys/dev/pci/mpii.c
> 3596:   scsi_strvis(bd->bd_serial, ppg->serial, sizeof(ppg->serial));
>
> /usr/src/sys/dev/biovar.h
> 111:    char            bd_serial[32];  /* serial number */
>
> Jiri
>