summaryrefslogtreecommitdiff
path: root/src/initrd
diff options
context:
space:
mode:
Diffstat (limited to 'src/initrd')
-rw-r--r--src/initrd/btrfs-create.sh24
-rwxr-xr-xsrc/initrd/grok-block7
2 files changed, 20 insertions, 11 deletions
diff --git a/src/initrd/btrfs-create.sh b/src/initrd/btrfs-create.sh
index a1a53ed..8a0cd87 100644
--- a/src/initrd/btrfs-create.sh
+++ b/src/initrd/btrfs-create.sh
@@ -27,22 +27,28 @@ ceil4()
27 printf '%d\n' "$x" 27 printf '%d\n' "$x"
28} 28}
29 29
30cdrom_has_rootfs()
31{
32 [ ! "$BOOTIF" ] || return
33 bootwait samizdat-cdrom
34 [ -d /cdrom/rootfs ]
35}
36
30losetup_layers() 37losetup_layers()
31{ 38{
32 if netbooting; then 39 if cdrom_has_rootfs; then
40 local fs fs_rw
41 for fs in /cdrom/rootfs/*.btrfs; do
42 fs_rw=/"${fs##*/}".rw
43 dd if=/dev/zero of="$fs_rw" bs=1M count=10
44 losetup_snapshot "$fs" "$fs_rw" || return
45 done
46 else
33 bootwait samizdat-nbd-dev 47 bootwait samizdat-nbd-dev
34 dd if=/dev/zero of=/nbd0.rw bs=1M count=10 48 dd if=/dev/zero of=/nbd0.rw bs=1M count=10
35 dm_snapshot /dev/nbd0 /nbd0.rw 49 dm_snapshot /dev/nbd0 /nbd0.rw
36 return 50 return
37 fi 51 fi
38
39 bootwait samizdat-cdrom
40 local fs fs_rw
41 for fs in /cdrom/rootfs/*.btrfs; do
42 fs_rw=/"${fs##*/}".rw
43 dd if=/dev/zero of="$fs_rw" bs=1M count=10
44 losetup_snapshot "$fs" "$fs_rw" || return
45 done
46} 52}
47 53
48init_samizdat() 54init_samizdat()
diff --git a/src/initrd/grok-block b/src/initrd/grok-block
index 3ad0432..f44ed19 100755
--- a/src/initrd/grok-block
+++ b/src/initrd/grok-block
@@ -150,8 +150,11 @@ grok_block()
150 # because while it's mounted, the dmsetup stuff will fail with device busy. 150 # because while it's mounted, the dmsetup stuff will fail with device busy.
151 /dev/nbd0) 151 /dev/nbd0)
152 if [ -e /bootwait/samizdat-nbd-dev ] 152 if [ -e /bootwait/samizdat-nbd-dev ]
153 then return 153 then
154 else wait_for_files_ /sys/block/nbd0/pid 154 return
155 else
156 bootwait nbd-script
157 wait_for_files_ /sys/block/nbd0/pid
155 fi 158 fi
156 ;; 159 ;;
157 esac 160 esac