conf/116931: lack of fsck_cd9660 prevents mounting iso images with mdconfig_md%d (with workaround)

Mikolaj Golub to.my.trociny at gmail.com
Sat Apr 3 17:10:13 UTC 2010


The following reply was made to PR conf/116931; it has been noted by GNATS.

From: Mikolaj Golub <to.my.trociny at gmail.com>
To: bug-followup at FreeBSD.org
Cc: freebsd-fs at FreeBSD.org, Poul-Henning Kamp <phk at critter.freebsd.dk>
Subject: Re: conf/116931: lack of fsck_cd9660 prevents mounting iso images with mdconfig_md%d (with workaround)
Date: Sat, 03 Apr 2010 20:05:25 +0300

 --=-=-=
 
 We could keep the list of fs types that should not be fsck'ed (like in the
 first patch below) or could check the pass number in /etc/fstab (the second
 patch).
 
 -- 
 Mikolaj Golub
 
 
 --=-=-=
 Content-Type: text/x-diff
 Content-Disposition: attachment; filename=mdconfig2.fsck_skip_fs.patch
 
 --- etc/rc.d/mdconfig2.orig	2010-04-03 18:39:43.000000000 +0300
 +++ etc/rc.d/mdconfig2	2010-04-03 19:38:07.000000000 +0300
 @@ -39,6 +39,19 @@
  start_precmd='[ -n "${_mdconfig2_list}" ]'
  required_modules="geom_md:g_md"
  
 +fsck_skip_fs="cd9660 udf"
 +
 +in_list()
 +{
 +	local _x _list _i
 +	_x=$1
 +	_list=$2
 +	for _i in ${_list}; do
 +		[ "${_x}" = "${_i}" ] && return 0
 +	done
 +	return 1
 +}
 +
  is_readonly()
  {
  	local _mp _ret
 @@ -95,10 +108,13 @@
  		for _i in `df ${_file} 2>/dev/null`; do _fs=${_i}; done
  	fi
  
 +	_fs_type=`awk -v d="${_dev}" '$1 == d {print $3; exit}' /etc/fstab`
 +
  	# Debugging help.
  	debug "${_md} config: ${_config}"
  	debug "${_md} type: ${_type}"
  	debug "${_md} dev: ${_dev}"
 +	debug "${_md} fs_type: ${_fs_type}"
  	debug "${_md} file: ${_file}"
  	debug "${_md} fs: ${_fs}"
  	debug "${_md} owner: ${_owner}"
 @@ -109,7 +125,7 @@
  
  mdconfig2_start()
  {
 -	local _md _fs _mp _mounted _dev _config _type _file _owner _perms _files _populate _fsck_cmd _i
 +	local _md _fs _mp _mounted _dev _config _type _file _owner _perms _files _populate _fsck_cmd _fs_type _i
  
  	for _md in ${_mdconfig2_list}; do
  		init_variables ${_md}
 @@ -136,8 +152,9 @@
  				echo "Creating ${_md} device failed, moving on."
  				continue
  			fi
 -			# Skip fsck for uzip devices.
 -			if [ "${_file}" != "${_file%.uzip}" ]; then
 +			# Skip fsck for uzip devices and for fs types listed in fsck_skip_fs
 +			if [ "${_file}" != "${_file%.uzip}" ] || 
 +			   in_list "${_fs_type}" "${fsck_skip_fs}"; then
  				_fsck_cmd=":"
  			elif checkyesno background_fsck; then
  				_fsck_cmd="fsck -F"
 
 --=-=-=
 Content-Type: text/x-diff
 Content-Disposition: inline; filename=mdconfig2.check_pass.patch
 
 --- etc/rc.d/mdconfig2.orig	2010-04-03 18:39:43.000000000 +0300
 +++ etc/rc.d/mdconfig2	2010-04-03 19:59:15.000000000 +0300
 @@ -136,8 +136,9 @@
  				echo "Creating ${_md} device failed, moving on."
  				continue
  			fi
 -			# Skip fsck for uzip devices.
 -			if [ "${_file}" != "${_file%.uzip}" ]; then
 +			# Skip fsck for uzip devices or that have zero pass in fstab
 +			if [ "${_file}" != "${_file%.uzip}" ] ||
 +			   `awk -v d="${_dev}" '$1 == d {exit $6}' /etc/fstab`; then
  				_fsck_cmd=":"
  			elif checkyesno background_fsck; then
  				_fsck_cmd="fsck -F"
 
 --=-=-=--


More information about the freebsd-fs mailing list