#linux-kernel #linux-device-driver #block-device #device-mapper
Вопрос:
Я реализовал свою собственную цель сопоставления устройств, и я могу создать сопоставленное устройство с dmsetup create
помощью команды.
Проблема в том, что размер сектора для этого устройства становится по умолчанию 512 байт, и я хотел бы изменить его на 4096 байт, как у целей dm-verity.
Например, ниже приведен размер сектора для устройства dm-verity, и fdisk сообщает о 4096 байтах:
$sudo fdisk -l /dev/mapper/dmv
Disk /dev/mapper/dmv: 8 KiB, 8192 bytes, 2 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Ниже приведен размер сектора для моей собственной цели, и fdisk сообщает о 512 байтах:
sudo fdisk -l /dev/mapper/my-target
Disk /dev/mapper/my-target: 8 KiB, 8192 bytes, 16 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Как я могу установить размер сектора для своей цели сопоставления устройств? Я не смог найти, где это сделано в libdevmapper или источнике cryptsetup для случая dm-verity.
Ура!
Комментарии:
1. Я думаю, вам нужно сделать это в
io_hints
обработчике дляstruct target_type
.2. Спасибо за ответ, Йен. Я добавил обработчик io_hints для типа структуры target_type, однако одного этого обработчика было недостаточно. Мне также пришлось добавить обработчик iterate_devices, чтобы установить размер сектора 4096B. Зачем также нужны iterate_devices? Как и где используется этот обработчик?