On Tue, May 14, 2013 at 08:39:26AM -0400, Kenneth R Westerback wrote:
> On Tue, May 14, 2013 at 12:16:57PM +0200, Federico Giannici wrote:
> > On 05/14/13 11:07, Stefan Sperling wrote:
> > >On Sun, May 12, 2013 at 05:27:31PM +0200, [email protected] wrote:
> > >>I had to go to "/dev" and execute "sh /dev/MAKEDEV" with all the sd0,
> > >>sd1, sd2, sd3, sd4 (maybe only sd2 was required), and then restart the
> > >>upgrade script.
> > >
> > >That's somewhat expected. The installer doesn't support softraid yet.
> > >
> > >Strictly speaking, setups where system partitions (other than /home
> > >or other user data partitions) are hosted on softraid should currently
> > >be considered experimental. Manual intervention is required for such
> > >setups, and that includes creating disk device files that are missing
> > >from the ramdisk.
> > >
> > >Perhaps the install script could easily be fixed to create the necessary
> > >device files. But it needs a non-trivial amount of work to support
> > >installing to a softraid volume and also upgrading them (I've tried to
> > >write support for that a while back, it's not very simple). Also, not
> > >many architectures can currently boot from softraid, and I'm not sure
> > >whether all architectures can already host the root filesystem on it.
> > >
> > >BTW, I found that on sparc64, the ramdisk is so starved for inodes that
> > >creating device nodes for one or two additional disks will cause problems
> > >while downloading the sets. Fix is to remove unneeded devices from the /dev
> > >directory as well as creating the needed ones.
> >
> > Apart from the MAKEDEV of the missing disk devices, the upgrade
> > script apparently worked correctly in two amd64 PCs with softraid 1
> > boot. What other things I have to pay attention to, and what else
> > could go wrong?
> >
> > I'm asking this because I was thinking to do other amd64 machines
> > with softraid 1 boot. But maybe it's still better to wait before
> > doing this?
> >
> > Thanks.
> >
> > --
> > ___________________________________________________
> > __
> > |- [email protected]
> > |ederico Giannici http://www.neomedia.it
> > ___________________________________________________
> >
>
> The upgrade process scans fstab and creates the devices needed to
> mount any ffs filesystems. So I imagine sd4 would have been created
> but constituent devices that don't appear in fstab or have no ffs
> filesystems specified will not be created.
>
> In the new RAID world it needs another check. Probably the easiest
> is to create all devices up to the highest disk encountered. This
> does, as pointed out, have some implications for inode starved
> install media on some architectures.
>
> Doing disklabel on all devices and looking for RAID partitions might
> be possible too. Which would minimize inode starvation.
>
> Deep thought. Hmmm.
>
> .... Ken
>
Something like the (untested) diff below might work.
.... Ken
Index: install.sub
===================================================================
RCS file: /cvs/src/distrib/miniroot/install.sub,v
retrieving revision 1.675
diff -u -p -r1.675 install.sub
--- install.sub 25 Mar 2013 21:35:45 -0000 1.675
+++ install.sub 14 May 2013 13:27:22 -0000
@@ -1725,6 +1725,16 @@ getdevname() {
fi
}
+# Scan disks for RAID partitions and create required devices so
+# they can be assembled if required.
+check_raid() {
+ local _dk
+
+ for _dk; do
+ disklabel $_dk | grep " ^[a-p]: " | grep -wq RAID && makedev
$_dk
+ done
+}
+
# Preen all filesystems in /etc/fstab that have a /sbin/fsck_XXX and a
# fs_passno > 0, showing individual results, but skipping $ROOTDEV. This was
# already fsck'ed successfully.
Index: upgrade.sh
===================================================================
RCS file: /cvs/src/distrib/miniroot/upgrade.sh,v
retrieving revision 1.72
diff -u -p -r1.72 upgrade.sh
--- upgrade.sh 21 Apr 2012 10:17:26 -0000 1.72
+++ upgrade.sh 14 May 2013 13:06:01 -0000
@@ -77,6 +77,10 @@ startftplist
# Create fstab for use during upgrade.
munge_fstab
+# Check for disks with RAID partitions and create required devices
+# for assembling them.
+check_raid $(get_dkdevs)
+
# fsck -p non-root filesystems in /etc/fstab.
check_fs