svn commit: r274630 - head/usr.sbin/freebsd-update

Ian Lepore ian at FreeBSD.org
Mon Nov 17 15:52:49 UTC 2014


On Mon, 2014-11-17 at 15:12 +0000, Mark Felder wrote:
> Author: feld (ports committer)
> Date: Mon Nov 17 15:12:46 2014
> New Revision: 274630
> URL: https://svnweb.freebsd.org/changeset/base/274630
> 
> Log:
>   Add logic for detecting non-persistent filesystems being utilized by
>   workdir which would break the upgrade process upon reboot.
>   
>   Currently we check for tmpfs and mdmfs.
>   
>   PR:		195006
>   Differential Revision:	https://reviews.freebsd.org/D1163
>   Approved by:	cperciva
> 
> Modified:
>   head/usr.sbin/freebsd-update/freebsd-update.sh
> 
> Modified: head/usr.sbin/freebsd-update/freebsd-update.sh
> ==============================================================================
> --- head/usr.sbin/freebsd-update/freebsd-update.sh	Mon Nov 17 14:56:02 2014	(r274629)
> +++ head/usr.sbin/freebsd-update/freebsd-update.sh	Mon Nov 17 15:12:46 2014	(r274630)
> @@ -580,6 +580,7 @@ fetchupgrade_check_params () {
>  	_KEYPRINT_z="Key must be given via -k option or configuration file."
>  	_KEYPRINT_bad="Invalid key fingerprint: "
>  	_WORKDIR_bad="Directory does not exist or is not writable: "
> +	_WORKDIR_bad2="Directory is not on a persistent filesystem: "
>  
>  	if [ -z "${SERVERNAME}" ]; then
>  		echo -n "`basename $0`: "
> @@ -603,6 +604,14 @@ fetchupgrade_check_params () {
>  		echo ${WORKDIR}
>  		exit 1
>  	fi
> +	for i in tmpfs mdmfs; do
> +		if df -t ${i} ${WORKDIR} >/dev/null 2>1; then
> +			echo -n "`basename $0`: "
> +			echo -n "${_WORKDIR_bad2}"
> +			echo ${WORKDIR}
> +			exit 1
> +		fi
> +	done
>  	chmod 700 ${WORKDIR}
>  	cd ${WORKDIR} || exit 1
>  
> 

This doesn't look quite right.  There is no mdmfs filesystem, that's
just the name of the tool that creates a UFS filesystem on an md(4)
device.  On one of my systems where /var is set up by /etc/rc.d/var
and /tmp by an fstab entry of: "md  /tmp  mfs  rw,noatime,-s128m 0 0"

I see this from df:

root at bb:~ # df -hT
Filesystem         Type     Size    Used   Avail Capacity  Mounted on
172.22.42.240:/bb  nfs      504G    280G    184G    60%    /
devfs              devfs    1.0K    1.0K      0B   100%    /dev
/dev/md0           ufs      124M     24K    114M     0%    /tmp
/dev/md1           ufs       31M    360K     28M     1%    /var

Something like this should work:

  case $(df -T ${WORKDIR}) in
    */dev/md[0-9]* | *tmpfs* ) 
        echo error messages and stuff
        exit 1
        ;;
  esac

-- Ian




More information about the svn-src-all mailing list