Index: /branches/releng-10/nanobsd/files/tools/update.inc.sh
===================================================================
--- /branches/releng-10/nanobsd/files/tools/update.inc.sh	(revision 13425)
+++ /branches/releng-10/nanobsd/files/tools/update.inc.sh	(revision 13425)
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+
+
+if echo $NANO_DRIVE | grep -q '^ufs/' then
+	NANO_LABEL=`echo $NANO_DRIVE | cut -c 5-`
+
+	# Detect GEOM drive to be updated based on the drive or label
+	GEOM_DRIVE=`glabel status | grep ${NANO_DRIVE} | awk '{print $3}' | sed -e 's/s[0-9a]*$//g' | uniq`
+
+	# Should never happen.
+	if [ `echo $GEOM_DRIVE | wc -l` -gt 1 ] ; then
+		echo "Bug: Multiple GEOM targets found with filter NANO_DRIVE=$NANO_DRIVE, unable to upgrade"
+		glabel status | sed "s/^/Bug: /g"
+		exit 1
+	fi
+else
+	NANO_LABEL=""
+	GEOM_DRIVE=$NANO_DRIVE
+fi
Index: /branches/releng-10/nanobsd/files/tools/updatep1
===================================================================
--- /branches/releng-10/nanobsd/files/tools/updatep1	(revision 13424)
+++ /branches/releng-10/nanobsd/files/tools/updatep1	(revision 13425)
@@ -43,13 +43,15 @@
 fi
 
+. /tools/update.inc.sh
+
 # Blow away old system.
-dd if=/dev/zero of=/dev/${NANO_DRIVE}s1 bs=1m count=1 > /dev/null 2>&1
+dd if=/dev/zero of=/dev/${GEOM_DRIVE}s1 bs=1m count=1 > /dev/null 2>&1
 
 # Copy in new system
-dd of=/dev/${NANO_DRIVE}s1 obs=64k
+dd of=/dev/${GEOM_DRIVE}s1 obs=64k
 
 # Check that it worked
-fsck_ffs -n /dev/${NANO_DRIVE}s1a
+fsck_ffs -n /dev/${GEOM_DRIVE}s1a
 
-gpart set -a active -i 1 ${NANO_DRIVE}
+gpart set -a active -i 1 ${GEOM_DRIVE}
 
Index: /branches/releng-10/nanobsd/files/tools/updatep2
===================================================================
--- /branches/releng-10/nanobsd/files/tools/updatep2	(revision 13424)
+++ /branches/releng-10/nanobsd/files/tools/updatep2	(revision 13425)
@@ -43,21 +43,28 @@
 fi
 
+. /tools/update.inc.sh
+
 # Blow away old system.
-dd if=/dev/zero of=/dev/${NANO_DRIVE}s2 bs=1m count=1 > /dev/null 2>&1
+dd if=/dev/zero of=/dev/${GEOM_DRIVE}s2 bs=1m count=1 > /dev/null 2>&1
 
 # Copy in new system
-dd of=/dev/${NANO_DRIVE}s2 obs=64k
+dd of=/dev/${GEOM_DRIVE}s2 obs=64k
+
+# Rebuild UFS label
+if [ -n "${NANO_LABEL}" ]; then
+	tunefs -L ${NANO_LABEL}"s2a" /dev/${GEOM_DRIVE}s2a
+fi
 
 # Check that it worked
-fsck_ffs -n /dev/${NANO_DRIVE}s2a
+fsck_ffs -n /dev/${GEOM_DRIVE}s2a
 
 # Update the /etc/fstab
 trap "umount /mnt" 1 2 15 EXIT
-mount /dev/${NANO_DRIVE}s2a /mnt
-sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/" /mnt/conf/base/etc/fstab
-sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/" /mnt/etc/fstab
+mount /dev/${GEOM_DRIVE}s2a /mnt
+sed -i "" "s+${NANO_DRIVE}s1+${NANO_DRIVE}s2+" /mnt/conf/base/etc/fstab
+sed -i "" "s+${NANO_DRIVE}s1+${NANO_DRIVE}s2+" /mnt/etc/fstab
 umount /mnt
 trap 1 2 15 EXIT
 
-gpart set -a active -i 2 ${NANO_DRIVE}
+gpart set -a active -i 2 ${GEOM_DRIVE}
 
