*** ix-jail.orig Tue Oct 23 11:06:10 2012 --- ix-jail Sat Oct 27 03:46:00 2012 *************** *** 50,55 **** --- 50,56 ---- do local mntpath_plugins="${path}/${name}/mnt/plugins" local mntpath_pbi="${path}/${name}/usr/pbi" + local gaol_md_size="" if [ ! -d "${plugins}/pbi" ] then *************** *** 67,72 **** --- 68,85 ---- echo "${plugins} ${mntpath_plugins} nullfs rw 0 0" | sed 's/ /\\040/g' > "/etc/fstab.${name}" echo "${plugins}/pbi ${mntpath_pbi} nullfs rw 0 0" | sed 's/ /\\040/g' >> "/etc/fstab.${name}" + # If required, create memory backed disk mounted on /var/mdisk (using jail specific or global size) + gaol_md_size=$(eval "echo \${gaol_${name}_tmp_fs_size}") + [ -z "${gaol_md_size}" ] && gaol_md_size=${gaol_tmp_fs_size} + if [ ! -z "${gaol_md_size}" ] + then + local gaol_tmp_unit=$(mdconfig -a -t swap -s ${gaol_md_size}) + logger -t ix-jail "Created memory backed disk /dev/${gaol_tmp_unit} with size ${gaol_md_size}" + newfs -U ${gaol_tmp_unit} + echo "/dev/${gaol_tmp_unit} ${path}/${name}/var/mdisk ufs rw 0 0" | sed 's/ /\\040/g' >> "/etc/fstab.${name}" + [ ! -d ${path}/${name}/var/mdisk ] && mkdir ${path}/${name}/var/mdisk + fi + ${FREENAS_SQLITE_CMD} ${FREENAS_CONFIG} " SELECT source, *************** *** 101,106 **** --- 114,133 ---- jail_v2_enable="YES" jail_enable="YES" __EOF__ + # If we're mounting a memory-backed /var/mdisk, optionally create + # within it any directories found to exist as symbolic links in /var, + # and whose content exists within /var/mdisk. + # If tmp is one of those links, need to make the directory globally writeable. + if [ ! -z "${gaol_md_size}" ] + then + local _d gaol_prestart="mkdir" + for _d in $(find "${path}/${name}/var" -depth 1 -type l -lname 'mdisk/*' -or -lname '*/mdisk/*' | tr -s "\n" "|") + do + gaol_prestart="${gaol_prestart} ${path}/${name}/var/mdisk/`basename ${_d}`" + [ "`basename ${_d}`" = "tmp" ] && echo "jail_${name}_exec_prestart1=\"chmod a+wt ${path}/${name}/var/mdisk/tmp\"" >>"${tmpfile}" + done + [ "$gaol_prestart" != "mkdir" ] && echo "jail_${name}_exec_prestart0=\"${gaol_prestart}\"" >>"${tmpfile}" + fi done mv "${tmpfile}" /etc/rc.conf *************** *** 188,193 **** --- 215,228 ---- grep -v "jail_" /etc/rc.conf > "${tmpfile}" mv "${tmpfile}" /etc/rc.conf + # Destroy memory backed disk (if present) + local gaol_tmp_unit=$(grep "^/dev/md.*/var/mdisk" "/etc/fstab.${jail_name}"|awk '{print $1}'|sed "s#/dev/md##") + if [ ! -z "${gaol_tmp_unit}" -a ! -z "$(mdconfig -l -u ${gaol_tmp_unit})" ] + then + logger -t ix-jail "Destroying memory backed disk /dev/md${gaol_tmp_unit}" + mdconfig -d -u ${gaol_tmp_unit} + fi + rm -f "/etc/fstab.${jail_name}" fi fi