Move image mount logic into a function

Fix image jail size stat to follow symlink
This commit is contained in:
erdgeist 2008-07-09 10:37:11 +00:00
parent 79d3217cc0
commit d435cc730a

View File

@ -83,7 +83,22 @@ attach_images () {
esac esac
} }
# define detach strategy for image jails # generic mount routine for image jails
mount_images () {
rm -f "${ezjail_devicelink}"
# Attach images by type
attach_images
# Clean image
fsck -t ffs -p "/dev/${ezjail_device}"
mount "/dev/${ezjail_device}" "${ezjail_rootdir}" || detach_images keep || exerr "Error: Could not mount /dev/${ezjail_device} to ${ezjail_rootdir}."
# relink image device
ln -s "/dev/${ezjail_device}" "${ezjail_devicelink}"
}
# generic detach routine for image jails
detach_images () { detach_images () {
# Avoid ending up inside mount point # Avoid ending up inside mount point
cd / cd /
@ -857,8 +872,8 @@ archive)
echo " Use ezjail-admin config -i attach ${ezjail_name} to attach it first." echo " Use ezjail-admin config -i attach ${ezjail_name} to attach it first."
continue continue
fi fi
$0 config -i attach ${ezjail_name} || exerr "Error: Can not attach ${ezjail_image} for ${ezjail_name}" mount_images
ezjail_imagesize=-`stat -f %z ${ezjail_image}` ezjail_imagesize=-`stat -Lf %z ${ezjail_image}`
fi fi
# This one goes into archive to identify jail by name and restore date # This one goes into archive to identify jail by name and restore date
@ -901,7 +916,7 @@ archive)
ezjail_paxresult=$? ezjail_paxresult=$?
# Detach previously attached jail # Detach previously attached jail
[ "${ezjail_imagesize}" ] && cd / && $0 config -i detach ${ezjail_name} [ "${ezjail_imagesize}" ] && detach_images keep
# An error on a jail not running is bad # An error on a jail not running is bad
[ ${ezjail_paxresult} -eq 0 -o "${ezjail_force}" ] || exerr "Error: Archiving jail failed. You might want to check ${ezjail_archive}." [ ${ezjail_paxresult} -eq 0 -o "${ezjail_force}" ] || exerr "Error: Archiving jail failed. You might want to check ${ezjail_archive}."
@ -1134,18 +1149,9 @@ config)
attach) attach)
# Check, if image already attached # Check, if image already attached
[ "${ezjail_attached}" ] && exerr "Error: Jail image file ${ezjail_image} already attached as ${ezjail_device}." [ "${ezjail_attached}" ] && exerr "Error: Jail image file ${ezjail_image} already attached as ${ezjail_device}."
rm -f "${ezjail_devicelink}"
# Attach images by type
attach_images
# Clean image
fsck -t ufs -p -B "/dev/${ezjail_device}"
mount "/dev/${ezjail_device}" "${ezjail_rootdir}" || detach_images keep || exerr "Error: Could not mount /dev/${ezjail_device} to ${ezjail_rootdir}."
# relink image device
ln -s "/dev/${ezjail_device}" "${ezjail_devicelink}"
# Actually, just "attaching" is not enough, we need to mount
mount_images
;; ;;
detach) detach)
# Check, if image really attached or running # Check, if image really attached or running