On Wed, 22 Feb 2012 08:08:10 -0300 Gerardo Exequiel Pozzi <[email protected]> wrote:
> On 02/22/2012 04:39 AM, Dieter Plaetinck wrote: > > On Tue, 21 Feb 2012 20:01:30 -0300 > > Gerardo Exequiel Pozzi<[email protected]> wrote: > > > >> NOTE: Not tested yet, but should work(tm). > >> > >> This list includes block devices of ( /run/archiso/used_block_devices ): > >> * Boot medium [archisodevice] (only if no copytoram= is used) > >> * Loop medium [img_dev] (only if no copytoram= is used) > >> * COW space [cowdevice] (only if cowdevice= is used (no tmpfs is used)) > >> * Loop devices used for SquashFS images. > >> * Loop devices used for device-mapper devices (two per each dm-device, one > >> RO{*.fs} and one RW{*.cow}) > >> > >> Aditionally all loop devices except for backing COW files, all are setup > >> as read-only. > >> > >> In configs/releng profile, a symlink is made at boot-time for AIF: > >> /run/aif/ignore_devs -> /run/archiso/used_block_devices > >> --- > >> archiso/hooks/archiso | 20 > >> ++++++++++++++++---- > >> archiso/hooks/archiso_loop_mnt | 3 ++- > >> .../rc.d/functions.d/symlink_used_block_devices | 7 +++++++ > >> 3 files changed, 25 insertions(+), 5 deletions(-) > >> create mode 100644 > >> configs/releng/root-image/etc/rc.d/functions.d/symlink_used_block_devices > >> > >> diff --git a/archiso/hooks/archiso b/archiso/hooks/archiso > >> index 3518d16..22b67e9 100644 > >> --- a/archiso/hooks/archiso > >> +++ b/archiso/hooks/archiso > >> @@ -10,7 +10,8 @@ _mnt_fs() { > >> > >> mkdir -p "${newroot}${mnt}" > >> > >> - ro_dev=$(losetup --find --show "${img}") > >> + ro_dev=$(losetup --find --show --read-only "${img}") > >> + echo ${ro_dev}>> /run/archiso/used_block_devices > >> ro_dev_size=$(blockdev --getsz ${ro_dev}) > >> > >> if [[ "${cow_persistent}" == "P" ]]; then > >> @@ -30,6 +31,7 @@ _mnt_fs() { > >> fi > >> > >> rw_dev=$(losetup --find --show > >> "/run/archiso/cowspace/${cow_directory}/${img_name}.cow") > >> + echo ${rw_dev}>> /run/archiso/used_block_devices > >> > >> echo "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} > >> ${cow_persistent} 8" | dmsetup create ${dm_snap_name} > >> > >> @@ -39,6 +41,7 @@ _mnt_fs() { > >> launch_interactive_shell > >> else > >> echo "/dev/mapper/${dm_snap_name} ${mnt} auto defaults 0 0">> > >> ${newroot}/etc/fstab > >> + echo /dev/mapper/${dm_snap_name}>> > >> /run/archiso/used_block_devices > >> fi > >> } > >> > >> @@ -46,7 +49,8 @@ _mnt_fs() { > >> _mnt_sfs() { > >> local img="${1}" > >> local mnt="${2}" > >> - local img_fullname="${img##*/}"; > >> + local img_fullname="${img##*/}" > >> + local sfs_dev > >> > >> mkdir -p "${mnt}" > >> > >> @@ -60,7 +64,9 @@ _mnt_sfs() { > >> msg "done." > >> fi > >> msg ":: Mounting '${img}' (SquashFS) to '${mnt}'" > >> - if ! mount -r "${img}" "${mnt}"&> /dev/null ; then > >> + sfs_dev=$(losetup --find --show --read-only "${img}") > >> + echo ${sfs_dev}>> /run/archiso/used_block_devices > >> + if ! mount -r "${sfs_dev}" "${mnt}"&> /dev/null ; then > >> echo "ERROR: while mounting '${img}' to '${mnt}'" > >> launch_interactive_shell > >> fi > >> @@ -137,7 +143,12 @@ run_hook() { > >> archiso_mount_handler() { > >> local newroot="${1}" > >> > >> - mountpoint -q "/run/archiso/bootmnt" || _mnt_dev "${archisodevice}" > >> "/run/archiso/bootmnt" "-r" > >> + if ! mountpoint -q "/run/archiso/bootmnt"; then > >> + _mnt_dev "${archisodevice}" "/run/archiso/bootmnt" "-r" > >> + if [[ "${copytoram}" != "y" ]]; then > >> + echo $(readlink -f ${archisodevice})>> > >> /run/archiso/used_block_devices > >> + fi > >> + fi > >> > >> if [[ ! -f "${aitab}" ]]; then > >> echo "ERROR: '${aitab}' file does not exist." > >> @@ -170,6 +181,7 @@ archiso_mount_handler() { > >> > >> if [[ -n "${cow_device}" ]]; then > >> _mnt_dev "${cow_device}" "/run/archiso/cowspace" "-r" > >> + echo $(readlink -f ${cow_device})>> > >> /run/archiso/used_block_devices > >> mount -o remount,rw "/run/archiso/cowspace" > >> else > >> msg ":: Mounting /run/archiso/cowspace (tmpfs) filesystem, > >> size=${cowspace_size}..." > >> diff --git a/archiso/hooks/archiso_loop_mnt > >> b/archiso/hooks/archiso_loop_mnt > >> index 664f3a5..808100d 100644 > >> --- a/archiso/hooks/archiso_loop_mnt > >> +++ b/archiso/hooks/archiso_loop_mnt > >> @@ -15,7 +15,7 @@ archiso_loop_mount_handler () { > >> msg ":: Setup a loop device from ${img_loop} located at device > >> ${img_dev}" > >> _mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r" > >> > >> - if ! _dev_loop=$(losetup --find --show > >> "/run/archiso/img_dev/${img_loop}"); then > >> + if ! _dev_loop=$(losetup --find --show --read-only > >> "/run/archiso/img_dev/${img_loop}"); then > >> echo "ERROR: Setting loopback device for file > >> '/run/archiso/img_dev/${img_loop}'" > >> launch_interactive_shell > >> fi > >> @@ -27,5 +27,6 @@ archiso_loop_mount_handler () { > >> umount /run/archiso/img_dev > >> else > >> echo ${_dev_loop}> /run/archiso/img_dev_loop > >> + echo $(readlink -f ${img_dev})>> /run/archiso/used_block_devices > >> fi > >> } > >> diff --git > >> a/configs/releng/root-image/etc/rc.d/functions.d/symlink_used_block_devices > >> > >> b/configs/releng/root-image/etc/rc.d/functions.d/symlink_used_block_devices > >> new file mode 100644 > >> index 0000000..e2b9fc1 > >> --- /dev/null > >> +++ > >> b/configs/releng/root-image/etc/rc.d/functions.d/symlink_used_block_devices > >> @@ -0,0 +1,7 @@ > >> +symlink_used_block_devices() > >> +{ > >> + mkdir /run/aif > >> + ln -s /run/archiso/used_block_devices /run/aif/ignore_devs > >> +} > >> + > >> +add_hook multi_end symlink_used_block_devices > > Hey G, > > seems like there's some small edits in here that have nothing to do with > > the actual block device listing changeset? > > > > Dieter > > > Yes, --read-only loops. > seems to me like you need 3 commits: 1) for syntactical changes, only this: - local img_fullname="${img##*/}"; + local img_fullname="${img##*/}" 2) for the read only loop devices 3) for the used_block_devices stuff Dieter
