#include <linux/hdreg.h> /* для HDIO_GETGEO */
#include <linux/fs.h> /* для BLKGETSIZE и BLKRRPART */
НАСТРОЙКА
Это блочное устройство. Имя устройства имеет следующую форму:
sdlp,
- где
l
- буква, обозначающая физический накопитель, а
p
- номер раздела в этом физическом накопителе. Часто
номер раздела
p
бывает пропущен, когда устройство соответствует полностью всему накопителю.
Диски SCSI содержат цифру 8 (это основной номер устройства), а второстепенные числа
устройства составляются по форме (16 *
номер_накопителя) + номер_раздела,
где
номер_накопителя
- это номер физического накопителя в порядке обнаружения, а
номер_раздела
:
раздел 0 - накопитель полностью
разделы #1-#4 являются основными ("primary") DOS-разделами
разделы #5-#8 - расширенные или логические ("extended" или "logical") DOS-разделы.
Например, основной номер
/dev/sda
- 8, второстепенный - 0; устройство присвоит их
всем первым накопителям SCSI в системе;
основной номер
/dev/sdb3
- 8, второстепенный - 19, устройство присвоит их третьему
основному разделу DOS на втором накопителе SCSI.
В настоящий момент поддерживаются только блочные устройства.
ОПИСАНИЕ
Доступны следующие вызовы
IR ioctl :
HDIO_GETGEO
Возвращает параметры диска из BIOS в виде следующей структуры:
struct hd_geometry {
unsigned char heads;
unsigned char sectors;
unsigned short cylinders;
unsigned long start;
};
Указатель на эту структуру является параметром
ioctl(2).
Информация, возвращаемая в параметр геометрии дискового накопителя,
понимается DOS!
Эта геометрия
не
является физической геометрией накопителя. Применяется, когда составляется
таблица разделов накопителя и есть необходимость для совместимости ее с операциями
fdisk(1),
efdisk(1)
и
lilo(1).
Если информация о геометрии диска недоступна, всем параметрам возвращается нулевое значение.
BLKGETSIZE
Возвращает размер устройства в секторах. Параметр
ioctl(2)
будет указывать на длину этого устройства.
BLKRRPART
Заставляет перечитать таблицы разделов на диске SCSI. Указывается без параметра.
ioctl также поддерживает
scsi(4).
Если параметр
ioctl(2)
оказался затребован, но его не существует, тогда
ioctl(2)
возвратит -EINVAL.
ФАЙЛЫ
/dev/sd[a-h]: целое устройство
/dev/sd[a-h][0-8]: отдельные блоки разделов