Блочное устройство Linux с нечетным (не четным) размером

Можно ли создать блочное устройство Linux (2.6) (например, петлевое устройство) нечетного размера? Я не мог этого сделать. losetup, похоже, округляется до границы 512 байт. Кажется, что ubd устройства ubd устройств Linux пользовательского режима округляют границу до 512 байт. В struct request у нас есть sector_t __sector для смещения блока для операций чтения/записи.

Я задаю этот вопрос только в образовательных целях. Я могу справиться с границей в 512 байт, но мне все еще интересно, можно ли будет ее обойти. В этом вопросе меня не интересуют другие уровни абстракции (например, использование обычных файлов или символьных устройств).


person pts    schedule 21.11.2010    source источник


Ответы (2)


Нет. Блочный уровень Linux 2.6 не воспринимает ничего меньше 512 байт. Что-нибудь меньшее (особенно не степень 2) потребует серьезного переписывания огромного количества кода.

person Chris    schedule 21.11.2010

Вот что отличает блочное устройство от символьного: блочная гранулярность. Дихотомия существует потому, что гораздо эффективнее моделировать реальное оборудование, которое работает поблочно, как абстракцию, которая также имеет дело с блоками. В противном случае каждая операция превратилась бы в гораздо более дорогостоящее вычисление.

Как вы упомянули, способ обойти это - использовать символьно-ориентированное устройство или абстракцию. Это центральная часть модели устройства Unix: все представляет собой серию октетов, за исключением тех вещей, которые можно виртуализировать только как одно целое.

person msw    schedule 21.11.2010
comment
Меня устраивает гранулярность блоков, но при этом у нас может быть странный размер устройства: просто сделайте последний блок меньше остальных. Однако акцент на моем вопросе не философский: меня интересует реализация ядра Linux 2.6. - person pts; 21.11.2010
comment
Это именно то, что я имел в виду под более дорогостоящими вычислениями. Окружая каждый доступ, это последний частичный блок? предикаты дороги при применении к каждой операции ввода-вывода. - person msw; 21.11.2010