Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

is it possible to access a dynamic disk on the same physical disk as the root partition? #22

Open
absolutelynothelix opened this issue Jan 20, 2023 · 4 comments

Comments

@absolutelynothelix
Copy link

absolutelynothelix commented Jan 20, 2023

i have a dynamic disk next to my root partition and ldmtool fails to create a device-mapper device for it because the root partition is obviously mounted and device-mapper complains that the device is busy. i've tried the same thing from a livecd and everything works fine.

Device          Start        End    Sectors   Size Type
/dev/sda1        2048  195354564  195352517  93.2G Linux filesystem
/dev/sda2   195354565 1953523086 1758168522 838.4G Microsoft LDM data
/dev/sda3  1953523087 1953525134       2048     1M Microsoft LDM metadata
$ sudo ldmtool create all
Unable to create volume Volume1 in disk group 51bd3060-8f2f-11ed-8b65-00d86154d8d8: ldm_vol_WORKSTATION-Dg0_Volume1: Stacking NODE_DEL [verify_udev]
[]
[ 1263.805769] device-mapper: table: 254:0: linear: Device lookup failed (-EBUSY)
[ 1263.805778] device-mapper: ioctl: error adding target to table
@absolutelynothelix
Copy link
Author

i believe that it's possible to use /dev/sda2 and /dev/sda3 directly with offsets relative to them instead of /dev/sda and absolute offsets:

$ sudo dmsetup create test-linear1 --table '0 1 linear /dev/sda 0'
device-mapper: reload ioctl on test-linear1 (254:0) failed: Device or resource busy
Command failed.
$ sudo dmsetup create test-linear1 --table '0 1 linear /dev/sda1 0'
device-mapper: reload ioctl on test-linear1 (254:0) failed: Device or resource busy
Command failed.
$ sudo dmsetup create test-linear1 --table '0 1 linear /dev/sda2 0'
$ sudo dmsetup create test-linear2 --table '0 1 linear /dev/sda3 0'
$ ls -la /dev/mapper
crw------- 10,236 root 21 Jan 12:09 control
lrwxrwxrwx      7 root 21 Jan 12:13 test-linear1 -> ../dm-0
lrwxrwxrwx      7 root 21 Jan 12:13 test-linear2 -> ../dm-1

@absolutelynothelix
Copy link
Author

it's indeed possible when using /dev/sda2 and offsets relative to it and i wrote a script that does what i want. ldmtool helped me to obtain the needed offsets, though. posting the script in case anyone wants it as an example and leaving this open because i believe that the ldmtool could be improved to handle this:

#!/bin/sh

if [ -e /dev/mapper/ldm ]; then
	umount /dev/mapper/ldm
	dmsetup remove ldm
else
	#       <logical_start_sector> <num_sectors> <target_type> <target_args>
	#                                            linear        <destination_device> <start_sector>
	dmsetup create ldm <<- EOF
		0                      1367463311    linear        /dev/sda2            390705211
		1367463311             390703104     linear        /dev/sda2            59
	EOF
	mount -o ro,noauto,dmask=022,fmask=133,uid=helix,gid=helix /dev/mapper/ldm /mnt
fi

@mwheiss
Copy link

mwheiss commented Jan 23, 2023

@absolutelynothelix

i have a dynamic disk next to my root partition and ldmtool fails to create a device-mapper device for it because the root partition is obviously mounted and device-mapper complains that the device is busy. i've tried the same thing from a livecd and everything works fine.

I see exactly the same behavior in my case (ldm mirror partition next to btrfs volume).

it's indeed possible when using /dev/sda2 and offsets relative to it and i wrote a script that does what i want. ldmtool helped me to obtain the needed offsets, though. posting the script in case anyone wants it as an example and leaving this open because i believe that the ldmtool could be improved to handle this:

I'm trying to set this up with a 2-device mirrored volume, but am not really sure how to translate the strace output of ldmtool to a script like yours.

Any pointers on how to set this up in my case would be very much appreciated! Here is the strace from a live-system for my case:

execve("/usr/bin/ldmtool", ["ldmtool", "create", "all"], 0x7ffd36f86470 /* 28 vars */) = 0
brk(NULL)                               = 0x5636679ba000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffdb93e1850) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f92c0dfa000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=62943, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 62943, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f92c0dea000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libldm-1.0.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=61632, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 61576, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0dda000
mprotect(0x7f92c0ddd000, 45056, PROT_NONE) = 0
mmap(0x7f92c0ddd000, 28672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f92c0ddd000
mmap(0x7f92c0de4000, 12288, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7f92c0de4000
mmap(0x7f92c0de8000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x7f92c0de8000
mmap(0x7f92c0de9000, 136, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c0de9000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libjson-glib-1.0.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=179504, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 176536, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0dae000
mmap(0x7f92c0db7000, 94208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7f92c0db7000
mmap(0x7f92c0dce000, 40960, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20000) = 0x7f92c0dce000
mmap(0x7f92c0dd8000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x29000) = 0x7f92c0dd8000
mmap(0x7f92c0dd9000, 408, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c0dd9000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libgio-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1979912, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 1954864, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0bd0000
mmap(0x7f92c0c0a000, 1126400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a000) = 0x7f92c0c0a000
mmap(0x7f92c0d1d000, 548864, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14d000) = 0x7f92c0d1d000
mmap(0x7f92c0da3000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d2000) = 0x7f92c0da3000
mmap(0x7f92c0dac000, 5168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c0dac000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libgobject-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=401920, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 396312, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0b6f000
mmap(0x7f92c0b7d000, 217088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x7f92c0b7d000
mmap(0x7f92c0bb2000, 106496, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x43000) = 0x7f92c0bb2000
mmap(0x7f92c0bcc000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5c000) = 0x7f92c0bcc000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1325824, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 1307632, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0a2f000
mprotect(0x7f92c0a4d000, 1175552, PROT_NONE) = 0
mmap(0x7f92c0a4d000, 598016, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0x7f92c0a4d000
mmap(0x7f92c0adf000, 573440, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb0000) = 0x7f92c0adf000
mmap(0x7f92c0b6c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13c000) = 0x7f92c0b6c000
mmap(0x7f92c0b6e000, 1008, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c0b6e000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libreadline.so.8", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=358224, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 359008, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c09d7000
mmap(0x7f92c09ed000, 188416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7f92c09ed000
mmap(0x7f92c0a1b000, 40960, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x44000) = 0x7f92c0a1b000
mmap(0x7f92c0a25000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4d000) = 0x7f92c0a25000
mmap(0x7f92c0a2e000, 2656, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c0a2e000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320v\2\0\0\0\0\0"..., 832) = 832
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=2220152, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f92c09d5000
pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
mmap(NULL, 1949008, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c07f9000
mmap(0x7f92c081f000, 1396736, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7f92c081f000
mmap(0x7f92c0974000, 339968, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17b000) = 0x7f92c0974000
mmap(0x7f92c09c7000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1cd000) = 0x7f92c09c7000
mmap(0x7f92c09cd000, 32080, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c09cd000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=103296, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 102408, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c07df000
mmap(0x7f92c07e2000, 57344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f92c07e2000
mmap(0x7f92c07f0000, 28672, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x7f92c07f0000
mmap(0x7f92c07f7000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f92c07f7000
mmap(0x7f92c07f8000, 8, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c07f8000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libuuid.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=32920, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 32784, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c07d6000
mmap(0x7f92c07d8000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f92c07d8000
mmap(0x7f92c07dc000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f92c07dc000
mmap(0x7f92c07dd000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f92c07dd000
mmap(0x7f92c07de000, 16, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c07de000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libdevmapper.so.1.02", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=377416, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 374320, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c077a000
mmap(0x7f92c0785000, 225280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7f92c0785000
mmap(0x7f92c07bc000, 81920, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x42000) = 0x7f92c07bc000
mmap(0x7f92c07d0000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x55000) = 0x7f92c07d0000
mmap(0x7f92c07d5000, 1584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c07d5000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libgmodule-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=24320, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 24680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0773000
mmap(0x7f92c0775000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f92c0775000
mmap(0x7f92c0777000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7f92c0777000
mmap(0x7f92c0778000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7f92c0778000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libmount.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=292552, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 287256, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c072c000
mprotect(0x7f92c0736000, 237568, PROT_NONE) = 0
mmap(0x7f92c0736000, 184320, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7f92c0736000
mmap(0x7f92c0763000, 49152, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x37000) = 0x7f92c0763000
mmap(0x7f92c0770000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x43000) = 0x7f92c0770000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=176800, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f92c072a000
mmap(NULL, 181896, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c06fd000
mprotect(0x7f92c0703000, 143360, PROT_NONE) = 0
mmap(0x7f92c0703000, 110592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7f92c0703000
mmap(0x7f92c071e000, 28672, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x21000) = 0x7f92c071e000
mmap(0x7f92c0726000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f92c0726000
mmap(0x7f92c0728000, 5768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c0728000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libffi.so.8", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=45480, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 46320, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c06f1000
mprotect(0x7f92c06f3000, 32768, PROT_NONE) = 0
mmap(0x7f92c06f3000, 24576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f92c06f3000
mmap(0x7f92c06f9000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f92c06f9000
mmap(0x7f92c06fb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7f92c06fb000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libpcre2-8.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=642072, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 639536, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0654000
mprotect(0x7f92c0657000, 622592, PROT_NONE) = 0
mmap(0x7f92c0657000, 442368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f92c0657000
mmap(0x7f92c06c3000, 176128, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6f000) = 0x7f92c06c3000
mmap(0x7f92c06ef000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9a000) = 0x7f92c06ef000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libtinfo.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=208456, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 207136, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0621000
mmap(0x7f92c062f000, 73728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x7f92c062f000
mmap(0x7f92c0641000, 57344, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20000) = 0x7f92c0641000
mmap(0x7f92c064f000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2d000) = 0x7f92c064f000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libudev.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=188872, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 186632, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c05f3000
mprotect(0x7f92c05f7000, 163840, PROT_NONE) = 0
mmap(0x7f92c05f7000, 114688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7f92c05f7000
mmap(0x7f92c0613000, 45056, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20000) = 0x7f92c0613000
mmap(0x7f92c061f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2b000) = 0x7f92c061f000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=928144, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f92c05f1000
mmap(NULL, 913680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c0511000
mmap(0x7f92c0521000, 475136, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x7f92c0521000
mmap(0x7f92c0595000, 368640, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x84000) = 0x7f92c0595000
mmap(0x7f92c05ef000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xdd000) = 0x7f92c05ef000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libblkid.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=234736, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 230296, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c04d8000
mprotect(0x7f92c04e0000, 172032, PROT_NONE) = 0
mmap(0x7f92c04e0000, 131072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f92c04e0000
mmap(0x7f92c0500000, 36864, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28000) = 0x7f92c0500000
mmap(0x7f92c050a000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31000) = 0x7f92c050a000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=128528, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 127272, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f92c04b8000
mmap(0x7f92c04bb000, 94208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f92c04bb000
mmap(0x7f92c04d2000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7f92c04d2000
mmap(0x7f92c04d6000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d000) = 0x7f92c04d6000
mmap(0x7f92c04d7000, 296, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f92c04d7000
close(3)                                = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f92c04b6000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f92c04b3000
arch_prctl(ARCH_SET_FS, 0x7f92c04b3880) = 0
set_tid_address(0x7f92c04b3b50)         = 4077
set_robust_list(0x7f92c04b3b60, 24)     = 0
rseq(0x7f92c04b41a0, 0x20, 0, 0x53053053) = 0
mprotect(0x7f92c09c7000, 16384, PROT_READ) = 0
mprotect(0x7f92c04d6000, 4096, PROT_READ) = 0
mprotect(0x7f92c050a000, 24576, PROT_READ) = 0
mprotect(0x7f92c05ef000, 4096, PROT_READ) = 0
mprotect(0x7f92c061f000, 4096, PROT_READ) = 0
mprotect(0x7f92c064f000, 16384, PROT_READ) = 0
mprotect(0x7f92c06ef000, 4096, PROT_READ) = 0
mprotect(0x7f92c06fb000, 4096, PROT_READ) = 0
mprotect(0x7f92c0726000, 4096, PROT_READ) = 0
mprotect(0x7f92c0770000, 8192, PROT_READ) = 0
mprotect(0x7f92c0b6c000, 4096, PROT_READ) = 0
mprotect(0x7f92c0778000, 4096, PROT_READ) = 0
mprotect(0x7f92c07d0000, 8192, PROT_READ) = 0
mprotect(0x7f92c07dd000, 4096, PROT_READ) = 0
mprotect(0x7f92c07f7000, 4096, PROT_READ) = 0
mprotect(0x7f92c0a25000, 12288, PROT_READ) = 0
mprotect(0x7f92c0bcc000, 12288, PROT_READ) = 0
mprotect(0x7f92c0da3000, 32768, PROT_READ) = 0
mprotect(0x7f92c0dd8000, 4096, PROT_READ) = 0
mprotect(0x7f92c0de8000, 4096, PROT_READ) = 0
mprotect(0x563667795000, 4096, PROT_READ) = 0
mprotect(0x7f92c0e2e000, 8192, PROT_READ) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
munmap(0x7f92c0dea000, 62943)           = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOSUID|ST_NOEXEC|ST_RELATIME}) = 0
statfs("/sys/fs/selinux", {f_type=SELINUX_MAGIC, f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={val=[0, 0]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_NOSUID|ST_NOEXEC|ST_RELATIME}) = 0
getrandom("\x33\xf0\x62\x61\x5c\x13\xdf\x47", 8, GRND_NONBLOCK) = 8
brk(NULL)                               = 0x5636679ba000
brk(0x5636679db000)                     = 0x5636679db000
access("/etc/selinux/config", F_OK)     = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
epoll_create1(EPOLL_CLOEXEC)            = 3
epoll_ctl(3, EPOLL_CTL_ADD, 1, {events=EPOLLIN, data={u32=0, u64=0}}) = -1 EPERM (Operation not permitted)
close(3)                                = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
openat(AT_FDCWD, "/sys/block", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
newfstatat(3, "", {st_mode=S_IFDIR|0755, st_size=0, ...}, AT_EMPTY_PATH) = 0
getdents64(3, 0x5636679ce4d0 /* 12 entries */, 32768) = 344
getdents64(3, 0x5636679ce4d0 /* 0 entries */, 32768) = 0
close(3)                                = 0
openat(AT_FDCWD, "/dev/loop1", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512, 0) = 512
close(3)                                = 0
openat(AT_FDCWD, "/dev/dm-1", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512, 0) = 512
close(3)                                = 0
openat(AT_FDCWD, "/dev/nvme0n1", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "3\300\216\320\274\0|\216\300\216\330\276\0|\277\0\6\271\0\2\374\363\244Ph\34\6\313\373\271\4\0"..., 512, 0) = 512
pread64(3, "EFI PART\0\0\1\0\\\0\0\0", 16, 512) = 16
openat(AT_FDCWD, "/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 4
newfstatat(4, "", {st_mode=S_IFREG|0644, st_size=27012, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 27012, PROT_READ, MAP_SHARED, 4, 0) = 0x7f92c0df3000
close(4)                                = 0
futex(0x7f92c09cca6c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
openat(AT_FDCWD, "/usr/lib64/gconv/UTF-16.so", O_RDONLY|O_CLOEXEC) = 4
read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
newfstatat(4, "", {st_mode=S_IFREG|0755, st_size=20272, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 20576, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f92c0ded000
mmap(0x7f92c0dee000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x1000) = 0x7f92c0dee000
mmap(0x7f92c0df0000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x3000) = 0x7f92c0df0000
mmap(0x7f92c0df1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x3000) = 0x7f92c0df1000
close(4)                                = 0
mprotect(0x7f92c0df1000, 4096, PROT_READ) = 0
brk(0x5636679ff000)                     = 0x5636679ff000
pread64(3, "\325\237\213\205\0\0\0\0\1\0\0\0\0\0\0\0\257\210\340\350\0\0\0\0\"\0\0\0\0\0\0\0"..., 76, 528) = 76
pread64(3, "(s*\301\37\370\322\21\272K\0\240\311>\311;\2118\340\6\273\310\244K\245\374\352\277\235\222\260\233"..., 16384, 1024) = 16384
brk(0x5636679f7000)                     = 0x5636679f7000
pread64(3, "PRIVHEAD\0\0/\345\0\2\0\f\1\331/b$\201\364}\0\0\0\0\0\0\0\1"..., 391, 106954240) = 391
newfstatat(3, "", {st_mode=S_IFBLK|0660, st_rdev=makedev(0x103, 0), ...}, AT_EMPTY_PATH) = 0
ioctl(3, BLKGETSIZE64, [2000398934016]) = 0
mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f92c03b2000
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576, 105906176) = 1048576
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
munmap(0x7f92c03b2000, 1052672)         = 0
close(3)                                = 0
openat(AT_FDCWD, "/dev/nvme2n1", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512, 0) = 512
pread64(3, "EFI PART\0\0\1\0\\\0\0\0", 16, 512) = 16
pread64(3, "/%;\347\0\0\0\0\1\0\0\0\0\0\0\0\257\210\340\350\0\0\0\0\"\0\0\0\0\0\0\0"..., 76, 528) = 76
pread64(3, "(s*\301\37\370\322\21\272K\0\240\311>\311;\256D\264Cg%lO\252m\224\304\224\345\231\216"..., 16384, 1024) = 16384
pread64(3, "PRIVHEAD\0\0000\37\0\2\0\f\1\331/b$\325]\314\0\0\0\0\0\0\0\1"..., 391, 106954240) = 391
newfstatat(3, "", {st_mode=S_IFBLK|0660, st_rdev=makedev(0x103, 0x1), ...}, AT_EMPTY_PATH) = 0
ioctl(3, BLKGETSIZE64, [2000398934016]) = 0
brk(0x563667af7000)                     = 0x563667af7000
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576, 105906176) = 1048576
close(3)                                = 0
openat(AT_FDCWD, "/dev/loop2", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512, 0) = 512
close(3)                                = 0
openat(AT_FDCWD, "/dev/loop0", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "hsqs\3\0\0\0C6fc\0\0\2\0\0\0\0\0\4\0\21\0\300\4\1\0\4\0\0\0"..., 512, 0) = 512
close(3)                                = 0
openat(AT_FDCWD, "/dev/dm-0", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512, 0) = 512
close(3)                                = 0
openat(AT_FDCWD, "/dev/nvme1n1", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "3\300\216\320\274\0|\216\300\216\330\276\0|\277\0\6\271\0\2\374\363\244Ph\34\6\313\373\271\4\0"..., 512, 0) = 512
pread64(3, "EFI PART\0\0\1\0\\\0\0\0", 16, 512) = 16
pread64(3, "K\357^\210\0\0\0\0\1\0\0\0\0\0\0\0\257Rw\356\0\0\0\0\"\0\0\0\0\0\0\0"..., 76, 528) = 76
pread64(3, "\26\343\311\343\\\v\270M\201}\371-\360\2\25\256m\222\221\367\216\24\312@\234\300\350\36#\311\345\241"..., 16384, 1024) = 16384
close(3)                                = 0
openat(AT_FDCWD, "/dev/sda", O_RDONLY)  = 3
ioctl(3, BLKSSZGET, [512])              = 0
pread64(3, "\353c\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\220\353I$\22\17\t"..., 512, 0) = 512
pread64(3, "EFI PART\0\0\1\0\\\0\0\0", 16, 512) = 16
pread64(3, "d\207J\10\0\0\0\0\1\0\0\0\0\0\0\0\377\237\360\0\0\0\0\0@\0\0\0\0\0\0\0"..., 76, 528) = 76
pread64(3, "\242\240\320\353\345\2713D\207\300h\266\267&\231\307\t\321%\254?e\325F\231\302\230\220\10k\244I"..., 31744, 1024) = 31744
close(3)                                = 0
openat(AT_FDCWD, "/dev/zram0", O_RDONLY) = 3
ioctl(3, BLKSSZGET, [4096])             = 0
pread64(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512, 0) = 512
close(3)                                = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7f92c0b6e0e8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
uname({sysname="Linux", nodename="localhost-live", ...}) = 0
newfstatat(AT_FDCWD, "/dev/mapper/control", {st_mode=S_IFCHR|0600, st_rdev=makedev(0xa, 0xec), ...}, 0) = 0
openat(AT_FDCWD, "/dev/mapper/control", O_RDWR) = 3
openat(AT_FDCWD, "/proc/devices", O_RDONLY) = 4
newfstatat(4, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(4, "Character devices:\n  1 mem\n  4 /"..., 1024) = 666
close(4)                                = 0
ioctl(3, DM_VERSION, [{version=[4, 0, 0], data_size=16384, flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=16384, flags=DM_EXISTS_FLAG}]) = 0
ioctl(3, DM_LIST_DEVICES, [{version=[4, 0, 0], data_size=16384, data_start=312, flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=376, data_start=312, flags=DM_EXISTS_FLAG}, ...]) = 0
ioctl(3, DM_TABLE_DEPS, [{version=[4, 0, 0], data_size=16384, data_start=312, dev=makedev(0xfd, 0x1), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG}] => [{version=[4, 47, 0], data_size=328, data_start=312, dev=makedev(0xfd, 0x1), name="live-base", target_count=1, open_count=0, event_nr=0, flags=DM_READONLY_FLAG|DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG}, ...]) = 0
ioctl(3, DM_TABLE_DEPS, [{version=[4, 0, 0], data_size=16384, data_start=312, dev=makedev(0xfd, 0), flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG}] => [{version=[4, 47, 0], data_size=336, data_start=312, dev=makedev(0xfd, 0), name="live-rw", target_count=1, open_count=1, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_ACTIVE_PRESENT_FLAG}, ...]) = 0
semctl(0, 0, SEM_INFO, {semmap=1024000000, semmni=32000, semmns=1024000000, semmnu=1024000000, semmsl=32000, semopm=500, semume=500, semusz=0, semvmx=32767, semaem=0}) = 0
access("/run/udev/control", F_OK)       = 0
openat(AT_FDCWD, "/dev/urandom", O_RDONLY) = 4
read(4, "\n\314", 2)                    = 2
semget(0xd4dcc0a, 1, IPC_CREAT|IPC_EXCL|0600) = 5
semctl(5, 0, SETVAL, 0x1)               = 0
semctl(5, 0, GETVAL, NULL)              = 1
close(4)                                = 0
semget(0xd4dcc0a, 1, 000)               = 5
semtimedop(5, [{sem_num=0, sem_op=1, sem_flg=0}], 1, NULL) = 0
semctl(5, 0, GETVAL, NULL)              = 2
ioctl(3, DM_DEV_CREATE, [{version=[4, 0, 0], data_size=16384, name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk1-01", flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=305, dev=makedev(0xfd, 0x2), name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk1-01", target_count=0, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG}]) = 0
ioctl(3, DM_TABLE_LOAD, [{version=[4, 0, 0], data_size=16384, data_start=312, dev=makedev(0xfd, 0x2), target_count=1, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG}, ...] => [{version=[4, 47, 0], data_size=305, data_start=312, dev=makedev(0xfd, 0x2), name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk1-01", target_count=0, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_INACTIVE_PRESENT_FLAG}]) = 0
ioctl(3, DM_DEV_SUSPEND, [{version=[4, 0, 0], data_size=16384, name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk1-01", event_nr=4246538, flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=305, dev=makedev(0xfd, 0x2), name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk1-01", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_UEVENT_GENERATED_FLAG}]) = 0
semget(0xd4dcc0a, 1, 000)               = 5
semtimedop(5, [{sem_num=0, sem_op=1, sem_flg=0}], 1, NULL) = 0
semctl(5, 0, GETVAL, NULL)              = 3
ioctl(3, DM_DEV_CREATE, [{version=[4, 0, 0], data_size=16384, name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk2-01", flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=305, dev=makedev(0xfd, 0x3), name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk2-01", target_count=0, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG}]) = 0
ioctl(3, DM_TABLE_LOAD, [{version=[4, 0, 0], data_size=16384, data_start=312, dev=makedev(0xfd, 0x3), target_count=1, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG}, ...] => [{version=[4, 47, 0], data_size=305, data_start=312, dev=makedev(0xfd, 0x3), name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk2-01", target_count=0, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_INACTIVE_PRESENT_FLAG}]) = 0
ioctl(3, DM_DEV_SUSPEND, [{version=[4, 0, 0], data_size=16384, name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk2-01", event_nr=4246538, flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=305, dev=makedev(0xfd, 0x3), name="ldm_part_DESKTOP-07ODLQ4-Dg0_Disk2-01", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_UEVENT_GENERATED_FLAG}]) = 0
semget(0xd4dcc0a, 1, 000)               = 5
semctl(5, 0, GETVAL, NULL)              = 3
semtimedop(5, [{sem_num=0, sem_op=-1, sem_flg=IPC_NOWAIT}], 1, NULL) = 0
semtimedop(5, [{sem_num=0, sem_op=0, sem_flg=0}], 1, NULL) = 0
semctl(5, 0, IPC_RMID, NULL)            = 0
newfstatat(AT_FDCWD, "/dev/mapper/ldm_part_DESKTOP-07ODLQ4-Dg0_Disk1-01", {st_mode=S_IFBLK|0660, st_rdev=makedev(0xfd, 0x2), ...}, 0) = 0
newfstatat(AT_FDCWD, "/dev/mapper/ldm_part_DESKTOP-07ODLQ4-Dg0_Disk2-01", {st_mode=S_IFBLK|0660, st_rdev=makedev(0xfd, 0x3), ...}, 0) = 0
openat(AT_FDCWD, "/dev/urandom", O_RDONLY) = 4
read(4, "\0\207", 2)                    = 2
semget(0xd4d8700, 1, IPC_CREAT|IPC_EXCL|0600) = 6
semctl(6, 0, SETVAL, 0x1)               = 0
semctl(6, 0, GETVAL, NULL)              = 1
close(4)                                = 0
semget(0xd4d8700, 1, 000)               = 6
semtimedop(6, [{sem_num=0, sem_op=1, sem_flg=0}], 1, NULL) = 0
semctl(6, 0, GETVAL, NULL)              = 2
ioctl(3, DM_DEV_CREATE, [{version=[4, 0, 0], data_size=16384, name="ldm_vol_DESKTOP-07ODLQ4-Dg0_Volume1", flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=305, dev=makedev(0xfd, 0x4), name="ldm_vol_DESKTOP-07ODLQ4-Dg0_Volume1", target_count=0, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG}]) = 0
ioctl(3, DM_TABLE_LOAD, [{version=[4, 0, 0], data_size=16384, data_start=312, dev=makedev(0xfd, 0x4), target_count=1, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG}, ...] => [{version=[4, 47, 0], data_size=305, data_start=312, dev=makedev(0xfd, 0x4), name="ldm_vol_DESKTOP-07ODLQ4-Dg0_Volume1", target_count=0, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_PERSISTENT_DEV_FLAG|DM_INACTIVE_PRESENT_FLAG}]) = 0
ioctl(3, DM_DEV_SUSPEND, [{version=[4, 0, 0], data_size=16384, name="ldm_vol_DESKTOP-07ODLQ4-Dg0_Volume1", event_nr=4228864, flags=DM_EXISTS_FLAG}] => [{version=[4, 47, 0], data_size=305, dev=makedev(0xfd, 0x4), name="ldm_vol_DESKTOP-07ODLQ4-Dg0_Volume1", target_count=1, open_count=0, event_nr=0, flags=DM_EXISTS_FLAG|DM_ACTIVE_PRESENT_FLAG|DM_UEVENT_GENERATED_FLAG}]) = 0
semget(0xd4d8700, 1, 000)               = 6
semctl(6, 0, GETVAL, NULL)              = 2
semtimedop(6, [{sem_num=0, sem_op=-1, sem_flg=IPC_NOWAIT}], 1, NULL) = 0
semtimedop(6, [{sem_num=0, sem_op=0, sem_flg=0}], 1, NULL) = 0
semctl(6, 0, IPC_RMID, NULL)            = 0
newfstatat(AT_FDCWD, "/dev/mapper/ldm_vol_DESKTOP-07ODLQ4-Dg0_Volume1", {st_mode=S_IFBLK|0660, st_rdev=makedev(0xfd, 0x4), ...}, 0) = 0
poll([{fd=1, events=POLLOUT}], 1, -1)   = 1 ([{fd=1, revents=POLLOUT}])
write(1, "[\n  \"ldm_vol_DESKTOP-07ODLQ4-Dg0"..., 43) = 43
newfstatat(1, "", {st_mode=S_IFREG|0644, st_size=43, ...}, AT_EMPTY_PATH) = 0
close(3)                                = 0
write(1, "\n", 1)                       = 1
exit_group(0)                           = ?
+++ exited with 0 +++

@absolutelynothelix
Copy link
Author

@mwheiss, i'm not sure if a mirrored volume has to be handled in a special way, but i've used the output of G_MESSAGES_DEBUG=all ldmtool scan:

...
** (ldmtool:13250): DEBUG: 02:59:41.239: Partition: Disk1-01
  ID: 5
  Parent ID: 4
  Disk ID: 2
  Index: 0
  Start: 390705211
  Vol Offset: 0
  Size: 1367463311
...
** (ldmtool:13250): DEBUG: 02:59:41.239: Partition: Disk1-02
  ID: 6
  Parent ID: 4
  Disk ID: 2
  Index: 0
  Start: 59
  Vol Offset: 1367463311
  Size: 390703104
...

in a mapping table

  1. the first column is the device-mapper device offset (starts from 0, then increases with the previous partition's size for every partition),
  2. the second column is the partition size (Size in the output above),
  3. the third column is "linear" because we're doing a linear mapping,
  4. the fourth column is the "Microsoft LDM data" partition,
  5. the fifth column is the partition offset relative to the "Microsoft LDM data" partition (Start in the output above).

or you can just compare the output above with my script to see where all these numbers are supposed to go. also, the source code of the libldm and the man dmsetup could be helpful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants