On Wed, 8 Feb 2012, Dave Anderson wrote:
>On Tue, 7 Feb 2012, Kenneth R Westerback wrote:
>
>>On Tue, Feb 07, 2012 at 09:42:07AM -0500, Dave Anderson wrote:
>>> I've got a system running amd64/mp -current (latest source update on
>>> February 1st) and have noticed (for quite a while, actually) that the
>>> nightly backup of / to /altroot wasn't working. I finally got around to
>>> looking into this and discovered that the /etc/daily script was
>>> explicitly checking for /dev/whatever in the /altroot fstab entry -- but
>>> I've been using DUIDs (as set up by the installer).
>>>
>>> Shouldn't the daily script be updated to handle DUIDs as well as
>>> explicit devices in /etc/fstab?
>>>
>>> Dave
>>
>>Does this diff work for you? Test with duid and without would be
>>nice. :-)
>>
>>And don't be bashful. Anybody can test!
>>
>>.... Ken
>
>That works for me, both ways.
>
>Thanks,
>
> Dave
Aaargh! Not quite, it turns out. This superficially appears to work,
and does seem to work in the non-DUID case, but I evidently didn't look
at the results carefully enough. In the DUID case, rather than copying
/ to the altroot partition it copies it to /dev/r<duid>.<partition>!
My bad. Apologies to all.
I remember seeing a commit which sounds like it might tweak some
low-level functions to translate DUIDs into devices; I'll upgrade to a
current -current and see if this problem goes away.
Dave
>>Index: daily
>>===================================================================
>>RCS file: /cvs/src/etc/daily,v
>>retrieving revision 1.72
>>diff -u -p -r1.72 daily
>>--- daily 6 Dec 2011 21:02:39 -0000 1.72
>>+++ daily 7 Feb 2012 20:14:26 -0000
>>@@ -90,20 +90,20 @@ if [ -f /var/account/acct ]; then
>> fi
>>
>> # If ROOTBACKUP is set to 1 in the environment, and
>>-# if filesystem named /altroot is type ffs, on /dev/* and mounted "xx",
>>+# if filesystem named /altroot is type ffs and mounted "xx",
>> # use it as a backup root filesystem to be updated daily.
>> next_part "Backing up root filesystem:"
>> while [ "X$ROOTBACKUP" = X1 ]; do
>>- rootbak=`awk '$2 == "/altroot" && $1 ~ /^\/dev\// && $3 == "ffs" && \
>>- $4 ~ /xx/ \
>>- { print substr($1, 6) }' < /etc/fstab`
>>+ rootbak=`awk '$2 == "/altroot" && $3 == "ffs" && $4 ~ /xx/ \
>>+ { print $1 }' < /etc/fstab`
>> if [ -z "$rootbak" ]; then
>> echo "No xx ffs /altroot device found in the fstab(5)."
>> break
>> fi
>>- bakdisk=${rootbak%[a-p]}
>>+ rootbak=${rootbak#/dev/}
>>+ bakdisk=${rootbak%%?(.)[a-p]}
>> sysctl -n hw.disknames | grep -Fqw $bakdisk || break
>>- bakpart=${rootbak#$bakdisk}
>>+ bakpart=${rootbak##$bakdisk?(.)}
>> baksize=`disklabel $bakdisk 2>/dev/null | \
>> awk -v "part=$bakpart:" '$1 == part { print $2 }'`
>> rootdev=`mount | awk '$3 == "/" && $1 ~ /^\/dev\// && $5 == "ffs" \
>
>
--
Dave Anderson
<[email protected]>