Command failed with code -4 (wrong device or file specified)
Issue description
So after an upgrade/windows installation I can't unlock my disk. luksDump returns everything beautifully so I don't think there is a header problem. Although hexdump shows some interesting things.
In the data provided by luksdump I found that the crypt is set to 4096 sector bytes. However, the disk itself is set to 512 bytes.
So I guess this might be the problem since reencrypt also brings up some sector related problem.
It also appears from the debug logs that the unlock is successful but the mount is not.
Steps for reproducing the issue
It was an update, so I have no idea.
Additional info
Fedora 37
Debug log
Dump:
Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 4096 [bytes]
...
Hexdump:
00000000 4c 55 4b 53 ba be 00 02 00 00 00 00 00 00 40 00 |LUKS..........@.|
00000010 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000040 00 00 00 00 00 00 00 00 73 68 61 32 35 36 00 00 |........sha256..|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000060 00 00 00 00 00 00 00 00 0f 4f 03 18 53 e1 98 77 |.........O..S..w|
00000070 d3 c5 88 f4 16 4a d3 f9 12 a0 70 8a 3c ac e8 06 |.....J....p.<...|
00000080 1b 1e ce 0f c3 df af 4c 14 f8 4f 07 4b 5d 43 12 |.......L..O.K]C.|
00000090 42 81 e9 59 c4 de cf 75 49 51 8e 56 15 a3 f9 59 |B..Y...uIQ.V...Y|
000000a0 e0 ba a7 8c 12 41 77 6c 33 66 39 37 61 66 39 36 |.....Awl3f97af96|
000000b0 2d 30 64 35 30 2d 34 30 34 38 2d 38 30 30 63 2d |-0d50-4048-800c-|
000000c0 34 39 35 31 61 32 37 37 36 62 36 32 00 00 00 00 |4951a2776b62....|
000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001c0 a8 29 1f ec 73 84 5e fe b0 d6 b1 b2 6e 79 cf 66 |.)..s.^.....ny.f|
000001d0 23 d9 b1 85 7f 7f 7d 81 31 7e 40 45 75 c8 f2 c3 |#.....}.1~@Eu...|
000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00001000 7b 22 6b 65 79 73 6c 6f 74 73 22 3a 7b 22 30 22 |{"keyslots":{"0"|
00001010 3a 7b 22 74 79 70 65 22 3a 22 6c 75 6b 73 32 22 |:{"type":"luks2"|
00001020 2c 22 6b 65 79 5f 73 69 7a 65 22 3a 36 34 2c 22 |,"key_size":64,"|
00001030 61 66 22 3a 7b 22 74 79 70 65 22 3a 22 6c 75 6b |af":{"type":"luk|
00001040 73 31 22 2c 22 73 74 72 69 70 65 73 22 3a 34 30 |s1","stripes":40|
...
Reencrypt:
Reencryption will change: volume key.
# cryptsetup 2.4.3 processing "cryptsetup-reencrypt /dev/sde3 --debug"
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Initialising reencryption context.
# Initialising UUID.
# Allocating context for crypt device /dev/sde3.
# Trying to open and read device /dev/sde3 with direct-io.
# Initialising device-mapper backend library.
# Removing headers.
# Allocating context for crypt device (none).
# Initialising device-mapper backend library.
Device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.org is not active.
Device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new is not active.
# Created LUKS reencryption log file LUKS-3f97af96-0d50-4048-800c-4951a2776b62.log.
# Log: direction = 0
# Log: mode = 0
# Log: offset = 0
# Log: shift = 0
# Running reencryption.
# Passphrases initialization.
# Allocating context for crypt device /dev/sde3.
# Trying to open and read device /dev/sde3 with direct-io.
# Initialising device-mapper backend library.
# Trying to load any crypt type from device /dev/sde3.
# Loading LUKS2 header (repair disabled).
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Trying to read primary LUKS2 header at offset 0x0.
# Opening locked device /dev/sde3
# Verifying locked device handle (bdev)
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (on-disk)
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (in-memory)
# Trying to read secondary LUKS2 header at offset 0x4000.
# Reusing open ro fd on device /dev/sde3
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (on-disk)
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (in-memory)
# Device size 126329396736, offset 16777216.
# Device /dev/sde3 READ lock released.
# PBKDF argon2id, time_ms 2000 (iterations 0), max_memory_kb 1048576, parallel_threads 4.
# Interactive passphrase entry requested.
Enter passphrase for key slot 0:
# Checking volume passphrase [keyslot 0] using passphrase.
# Trying to open LUKS2 keyslot 0.
# Running keyslot key derivation.
# Reading keyslot area [0x8000].
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Reusing open ro fd on device /dev/sde3
# Device /dev/sde3 READ lock released.
# Verifying key from keyslot 0, digest 0.
Key slot 0 unlocked.
# Releasing crypt device /dev/sde3 context.
# Releasing device-mapper backend.
# Closing read only fd for /dev/sde3.
# Storing backup of LUKS headers.
# Creating LUKS header backup for device /dev/sde3.
# Allocating context for crypt device /dev/sde3.
# Trying to open and read device /dev/sde3 with direct-io.
# Initialising device-mapper backend library.
# Trying to load any crypt type from device /dev/sde3.
# Loading LUKS2 header (repair disabled).
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Trying to read primary LUKS2 header at offset 0x0.
# Opening locked device /dev/sde3
# Verifying locked device handle (bdev)
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (on-disk)
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (in-memory)
# Trying to read secondary LUKS2 header at offset 0x4000.
# Reusing open ro fd on device /dev/sde3
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (on-disk)
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (in-memory)
# Device size 126329396736, offset 16777216.
# Device /dev/sde3 READ lock released.
# PBKDF argon2id, time_ms 2000 (iterations 0), max_memory_kb 1048576, parallel_threads 4.
# Reloading LUKS2 header (repair disabled).
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Trying to read primary LUKS2 header at offset 0x0.
# Reusing open ro fd on device /dev/sde3
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (on-disk)
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (in-memory)
# Trying to read secondary LUKS2 header at offset 0x4000.
# Reusing open ro fd on device /dev/sde3
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (on-disk)
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (in-memory)
# Device size 126329396736, offset 16777216.
# Device /dev/sde3 READ lock released.
# Requested header backup of device /dev/sde3 (any type) to file LUKS-3f97af96-0d50-4048-800c-4951a2776b62.org.
# Storing backup of header (16777216 bytes).
# Output backup file size: 16777216 bytes.
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Reusing open ro fd on device /dev/sde3
# Device /dev/sde3 READ lock released.
# Reloading LUKS2 header (repair disabled).
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Trying to read primary LUKS2 header at offset 0x0.
# Reusing open ro fd on device /dev/sde3
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (on-disk)
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (in-memory)
# Trying to read secondary LUKS2 header at offset 0x4000.
# Reusing open ro fd on device /dev/sde3
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (on-disk)
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (in-memory)
# Device size 126329396736, offset 16777216.
# Device /dev/sde3 READ lock released.
# Requested header backup of device /dev/sde3 (LUKS2) to file LUKS-3f97af96-0d50-4048-800c-4951a2776b62.tmp.
# Storing backup of header (16777216 bytes).
# Output backup file size: 16777216 bytes.
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Reusing open ro fd on device /dev/sde3
# Device /dev/sde3 READ lock released.
LUKS2 header backup of device /dev/sde3 created.
# Creating empty file LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new of size 4096.
# Allocating context for crypt device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new.
# Trying to open and read device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new with direct-io.
# Trying to open device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new without direct-io.
# PBKDF argon2id, time_ms 2000 (iterations 0), max_memory_kb 1048576, parallel_threads 4.
# Data offset set to 32768 (512-byte) sectors.
# Formatting device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new as type LUKS2.
# Trying to open and read device /dev/sde3 with direct-io.
# Checking if cipher aes-xts-plain64 is usable.
# Using userspace crypto wrapper to access keyslot area.
# Formatting LUKS2 with JSON metadata area 12288 bytes and keyslots area 16744448 bytes.
# Creating new digest 0 (pbkdf2).
# Setting PBKDF2 type key digest 0.
# Running pbkdf2(sha256) benchmark.
# PBKDF benchmark: memory cost = 0, iterations = 315076, threads = 0 (took 104 ms)
# PBKDF benchmark: memory cost = 0, iterations = 558942, threads = 0 (took 469 ms)
# PBKDF benchmark: memory cost = 0, iterations = 542741, threads = 0 (took 966 ms)
# Benchmark returns pbkdf2(sha256) 542741 iterations, 0 memory, 0 threads (for 512-bits key).
# Segment 0 assigned to digest 0.
Device size is not aligned to requested sector size.
# Releasing crypt device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new context.
# Closing read only fd for LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new.
# Releasing crypt device /dev/sde3 context.
# Releasing device-mapper backend.
# Closing read only fd for /dev/sde3.
Creation of LUKS backup headers failed.
# Destroying reencryption context.
# Closing LUKS reencryption log file LUKS-3f97af96-0d50-4048-800c-4951a2776b62.log.
# Removing headers.
# Allocating context for crypt device (none).
# Initialising device-mapper backend library.
Device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.org is not active.
Device LUKS-3f97af96-0d50-4048-800c-4951a2776b62.new is not active.
luksOpen:
# cryptsetup 2.4.3 processing "cryptsetup luksOpen /dev/sde3 fedora --debug"
# Running command open.
# Locking memory.
# Installing SIGINT/SIGTERM handler.
# Unblocking interruption on signal.
# Allocating context for crypt device /dev/sde3.
# Trying to open and read device /dev/sde3 with direct-io.
# Initialising device-mapper backend library.
# Trying to load any crypt type from device /dev/sde3.
# Crypto backend (OpenSSL 3.0.2 15 Mar 2022 [default][legacy]) initialized in cryptsetup library version 2.4.3.
# Detected kernel Linux 5.19.0-32-generic x86_64.
# Loading LUKS2 header (repair disabled).
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Trying to read primary LUKS2 header at offset 0x0.
# Opening locked device /dev/sde3
# Verifying locked device handle (bdev)
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (on-disk)
# Checksum:a8291fec73845efeb0d6b1b26e79cf6623d9b1857f7f7d81317e404575c8f2c3 (in-memory)
# Trying to read secondary LUKS2 header at offset 0x4000.
# Reusing open ro fd on device /dev/sde3
# LUKS2 header version 2 of size 16384 bytes, checksum sha256.
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (on-disk)
# Checksum:3ac473130eb32c6ddb173a7b295b7b49fd3a65284df6d082698ceee701bf472e (in-memory)
# Device size 126329396736, offset 16777216.
# Device /dev/sde3 READ lock released.
# PBKDF argon2id, time_ms 2000 (iterations 0), max_memory_kb 1048576, parallel_threads 4.
# Activating volume fedora using token (any type) -1.
# dm version [ opencount flush ] [16384] (*1)
# dm versions [ opencount flush ] [16384] (*1)
# Detected dm-ioctl version 4.47.0.
# Detected dm-crypt version 1.24.0.
# Device-mapper backend running with UDEV support enabled.
# dm status fedora [ opencount noflush ] [16384] (*1)
No usable token is available.
# Interactive passphrase entry requested.
Enter passphrase for /dev/sde3:
# Activating volume fedora [keyslot -1] using passphrase.
# dm versions [ opencount flush ] [16384] (*1)
# dm status fedora [ opencount noflush ] [16384] (*1)
# Keyslot 0 priority 1 != 2 (required), skipped.
# Trying to open LUKS2 keyslot 0.
# Running keyslot key derivation.
# Reading keyslot area [0x8000].
# Acquiring read lock for device /dev/sde3.
# Opening lock resource file /run/cryptsetup/L_8:67
# Verifying lock handle for /dev/sde3.
# Device /dev/sde3 READ lock taken.
# Reusing open ro fd on device /dev/sde3
# Device /dev/sde3 READ lock released.
# Verifying key from keyslot 0, digest 0.
# Loading key (64 bytes, type logon) in thread keyring.
# dm versions [ opencount flush ] [16384] (*1)
# dm status fedora [ opencount noflush ] [16384] (*1)
# Calculated device size is 246704335 sectors (RW), offset 32768.
# DM-UUID is CRYPT-LUKS2-3f97af960d504048800c4951a2776b62-fedora
# Udev cookie 0xd4dd326 (semid 2) created
# Udev cookie 0xd4dd326 (semid 2) incremented to 1
# Udev cookie 0xd4dd326 (semid 2) incremented to 2
# Udev cookie 0xd4dd326 (semid 2) assigned to CREATE task(0) with flags DISABLE_LIBRARY_FALLBACK (0x20)
# dm create fedora CRYPT-LUKS2-3f97af960d504048800c4951a2776b62-fedora [ opencount flush ] [16384] (*1)
# dm reload (253:0) [ opencount flush securedata ] [16384] (*1)
device-mapper: reload ioctl on fedora (253:0) failed: Invalid argument
# Udev cookie 0xd4dd326 (semid 2) decremented to 1
# Udev cookie 0xd4dd326 (semid 2) incremented to 2
# Udev cookie 0xd4dd326 (semid 2) assigned to REMOVE task(2) with flags DISABLE_LIBRARY_FALLBACK (0x20)
# dm remove fedora [ opencount flush securedata ] [16384] (*1)
# Uevent not generated! Calling udev_complete internally to avoid process lock-up.
# Udev cookie 0xd4dd326 (semid 2) decremented to 1
# dm versions [ opencount flush ] [16384] (*1)
# dm status fedora [ opencount noflush ] [16384] (*1)
# Udev cookie 0xd4dd326 (semid 2) decremented to 0
# Udev cookie 0xd4dd326 (semid 2) waiting for zero
# Udev cookie 0xd4dd326 (semid 2) destroyed
# Requesting keyring logon key for revoke and unlink.
# Releasing crypt device /dev/sde3 context.
# Releasing device-mapper backend.
# Closing read only fd for /dev/sde3.
# Unlocking memory.
Command failed with code -4 (wrong device or file specified).