summaryrefslogtreecommitdiff
path: root/archiso/initcpio
diff options
context:
space:
mode:
authorGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2012-10-13 14:40:41 -0300
committerGerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>2012-10-13 14:40:41 -0300
commit1746e31049c50fb413cceeefcf21b2bda4e2de48 (patch)
tree9602524f975f2a384b7c578211c29c103c1f8e5a /archiso/initcpio
parent2e94974e2b37b540d52799362f05e16315cb0b00 (diff)
[archiso] Introduce cowfile_size= bootparam
If not set, nothing is changed in current behaviour. Since dm-snapshot allows to use as "COW" a file with any size, without caring about the the size of "origin", we can avoid creating a "COW" file of the same size as the "origin". This is really useful, when using as cow_device= a filesystem that is VFAT where sparse files are not supported, so if root-image.fs is 1000M, passing cowfile_size=25% will create a root-image.cow of 250M instead of 1000M. Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Diffstat (limited to 'archiso/initcpio')
-rw-r--r--archiso/initcpio/hooks/archiso10
1 files changed, 8 insertions, 2 deletions
diff --git a/archiso/initcpio/hooks/archiso b/archiso/initcpio/hooks/archiso
index 5b94743..491ed2f 100644
--- a/archiso/initcpio/hooks/archiso
+++ b/archiso/initcpio/hooks/archiso
@@ -11,13 +11,14 @@ _mnt_fs() {
ro_dev=$(losetup --find --show --read-only "${img}")
echo ${ro_dev} >> /run/archiso/used_block_devices
ro_dev_size=$(blockdev --getsz ${ro_dev})
+ rw_dev_size=$((ro_dev_size*cowfile_size/100))
if [[ "${cow_persistent}" == "P" ]]; then
if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow', using as persistent."
else
msg ":: Creating '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' as persistent."
- dd of="/run/archiso/cowspace/${cow_directory}/${img_name}.cow" count=0 seek=${ro_dev_size} &> /dev/null
+ dd of="/run/archiso/cowspace/${cow_directory}/${img_name}.cow" count=0 seek=${rw_dev_size} &> /dev/null
fi
else
if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
@@ -25,7 +26,7 @@ _mnt_fs() {
rm -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
fi
msg ":: Creating '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' as non-persistent."
- dd of="/run/archiso/cowspace/${cow_directory}/${img_name}.cow" count=0 seek=${ro_dev_size} &> /dev/null
+ dd of="/run/archiso/cowspace/${cow_directory}/${img_name}.cow" count=0 seek=${rw_dev_size} &> /dev/null
fi
rw_dev=$(losetup --find --show "/run/archiso/cowspace/${cow_directory}/${img_name}.cow")
@@ -101,6 +102,11 @@ run_hook() {
[[ -z "${archisobasedir}" ]] && archisobasedir="arch"
[[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="arch"
[[ -z "${archisodevice}" ]] && archisodevice="/dev/disk/by-label/${archisolabel}"
+ if [[ -z "${cowfile_size}" ]]; then
+ cowfile_size="100"
+ else
+ cowfile_size=${cowfile_size/%}
+ fi
if [[ -z "${aitab}" ]]; then
aitab="/run/archiso/bootmnt/${archisobasedir}/aitab"