Блочное устройство Linux с нечетным (не четным) размером - PullRequest
1 голос
/ 21 ноября 2010

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

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

Ответы [ 2 ]

1 голос
/ 21 ноября 2010

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

1 голос
/ 21 ноября 2010

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

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

...