summaryrefslogtreecommitdiffstats
path: root/modules.d
diff options
context:
space:
mode:
authorJonathan Bauer2020-05-14 17:33:49 +0200
committerJonathan Bauer2020-05-14 17:33:49 +0200
commit5f9972c9e743cfb05c421018802ee8df1e0d5fc2 (patch)
tree98b955adae7fc136f169b7789057b5224b3e33df /modules.d
parent[slx-dmsetup] data_block_size -> 256 (diff)
downloadsystemd-init-5f9972c9e743cfb05c421018802ee8df1e0d5fc2.tar.gz
systemd-init-5f9972c9e743cfb05c421018802ee8df1e0d5fc2.tar.xz
systemd-init-5f9972c9e743cfb05c421018802ee8df1e0d5fc2.zip
[slx-dmsetup] preparations for persistent metadata device for thin-pool
Diffstat (limited to 'modules.d')
-rwxr-xr-xmodules.d/slx-dmsetup/scripts/dmsetup-slx-device20
1 files changed, 14 insertions, 6 deletions
diff --git a/modules.d/slx-dmsetup/scripts/dmsetup-slx-device b/modules.d/slx-dmsetup/scripts/dmsetup-slx-device
index 7a371123..8ec34fdc 100755
--- a/modules.d/slx-dmsetup/scripts/dmsetup-slx-device
+++ b/modules.d/slx-dmsetup/scripts/dmsetup-slx-device
@@ -327,17 +327,25 @@ create_pool() {
# TODO handle the exotic case of a too large metadata device to fit within RAM.
[ "$metadata_dev_size" -gt 33554432 ] && metadata_dev_size="33554432"
# TODO handle persistent metadata device on disk
- # create RAMdisk in /run for metadata device
- metadata_dev="$(mktemp -p /run/openslx .pool-metadata.XXX)"
- dd of="$metadata_dev" bs=512 seek="$metadata_dev_size" &> /dev/null
- metadata_dev="$(losetup --show --find $metadata_dev)"
+ local metadata_volatile="yes"
+ if [ -n "$metadata_volatile" ]; then
+ # create RAMdisk in /run for metadata device
+ metadata_dev="$(mktemp -p /run/openslx .pool-metadata.XXX)"
+ dd of="$metadata_dev" bs=512 seek="$metadata_dev_size" &> /dev/null
+ metadata_dev="$(losetup --show --find $metadata_dev)"
+ else
+ # create persistent slice of the writable device for the pool metadata
+ if ! dmsetup_create_noudevsync "metadata" \
+ "0 $metadata_dev_size linear $writable_device 0"; then
+ fi
+ metadata_dev="/dev/mapper/metadata"
+ writable_device_size=$(( $writable_device_size - $metadata_dev_size ))
+ fi
if ! dmsetup_create_noudevsync "${pool_metadata_dev##*/}" \
"0 $metadata_dev_size linear $metadata_dev 0"; then
echo "$0: Failed to create pool metadata device on '$writable_device'."
return 1
fi
- # For persistent metadata device we will need to cut that space off first:
- # writable_device_size=$(( $writable_device_size - $metadata_dev_size ))
if ! dmsetup_create_noudevsync "${pool_data_dev##*/}" \
"0 $writable_device_size linear $writable_device 0"; then