diff options
| author | Jonathan Bauer | 2020-05-14 17:33:49 +0200 |
|---|---|---|
| committer | Jonathan Bauer | 2020-05-14 17:33:49 +0200 |
| commit | 5f9972c9e743cfb05c421018802ee8df1e0d5fc2 (patch) | |
| tree | 98b955adae7fc136f169b7789057b5224b3e33df /modules.d | |
| parent | [slx-dmsetup] data_block_size -> 256 (diff) | |
| download | systemd-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-x | modules.d/slx-dmsetup/scripts/dmsetup-slx-device | 20 |
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 |
