Re: BSD disklabels

From
Dmitry Pryanishnikov (2:464/36)
To
Aleksey Cheusov
Date
2006-09-18T22:56:34Z
Area
RU.UNIX.BSD
From: Dmitry Pryanishnikov <dmitry@atlantis.dp.ua>


Привет!

On Thu, 14 Sep 2006, Aleksey Cheusov wrote:
> полностью игнорируется *BSD (я имею ввиду именование разделов, т.е. номера).
> Вместо этого используется своя, та, что задается disklabels,
> как выясняется несовместимая между разными *BSD.

   Несовместимость там, насколько я разбирался этой весной (на примере NetBSD)
достаточно условная (см. мои письма в -current за середину марта с темой
"[patch] NetBSD disklabel support for geom_bsd"): дело практически упирается
в разный размер таблицы разделов (у FreeBSD максимум установлен в 8 элементов,
реально до конца 512-байтового сектора есть место для 22). Я вначале предложил
довольно сложный патч (мне показалось, что FreeBSD и NetBSD по-разному 
трактуют смещение раздела p_offset - это оказалось ошибкой). Все гораздо 
проще, нужно просто "собраться с духом" и поднять MAXPARTITIONS до 22;
при этом проанализировать, чтобы под этот подъем везде корректно была выделена 
память. Плюс для обратной совместимости все-таки вновь создаваемые таблицы 
делать на 8 входов по-умолчанию (но давать возможность потом расширять до 
MAXPARTITIONS). Это все - не утопия, поскольку перед массивом описателей 
разделов есть их реальное количество:

u_int16_t d_npartitions;        /* number of partitions in following */

Задача для меня сейчас низкоприоритетная, найду для нее время - доведу до ума.
А что до ссылок на мифическую "геометрию" - ее там нет:

         struct partition {              /* the partition table */
                 u_int32_t p_size;       /* number of sectors in partition */
                 u_int32_t p_offset;     /* starting sector */
                 u_int32_t p_fsize;      /* filesystem basic fragment size */
                 u_int8_t p_fstype;      /* filesystem type, see below */
                 u_int8_t p_frag;        /* filesystem fragments per block */
                 u_int16_t p_cpg;        /* filesystem cylinders per group */
         } d_partitions[MAXPARTITIONS];  /* actually may be more */

Местоположение раздела описавает пара p_size + p_offset . Тут ограничение
такое же, как и для i386 MBR-слайсов: 2^32 секторов. Остальные поля, насколько
я понимаю, не влияют на доступ к разделу, а просто служать хинтами для newfs.

> Планируется ли где-нибудь когда-нибудь кем-нибудь
> избавиться (сделать опциональными) disklabels в пользу
> нативной системы организации разделов (partitions).

   Вот тут главное недоразумение: disklabels для *BSD-систем _и есть_
нативная система организации разделов. RTFM UNIX history. Она не начинается
на i386 и не ограничивается набором из (i386|amd64).

Sincerely, Dmitry
-- 
Atlantis ISP, System Administrator
e-mail:  dmitry@atlantis.dp.ua
nic-hdl: LYNX-RIPE
--- ifmail v.2.14.os-p7
 * Origin: Atlantis ISP (2:464/36@fidonet)
SEEN-BY: 46/999 50/12 400/520 814 450/1024 460/120 463/68 464/0 34 36 41 66
SEEN-BY: 464/100 128 405 562 999 3000 5555 465/213 550/5068 4642/44 4646/1
SEEN-BY: 5000/0 20 26 27 61 94 104 116 130 170 5000 5002/76 5002 5004/75 1111
SEEN-BY: 5005/14 5009/14 5010/77 275 5011/13 5012/46 5013/21 5015/28 5019/31
SEEN-BY: 5020/545 2395 2871 4441 5021/29 5025/3 5027/12 5029/34 5030/1080 1957
SEEN-BY: 5035/38 5045/7 5054/1 4 8 9 11 28 35 36 37 45 63 66 67 70 75 84 85
SEEN-BY: 5055/177 5057/119 5059/9 5062/10 5063/3 5064/7 5070/66 5077/70
SEEN-BY: 5085/13 5090/1029 5095/20 5096/18 6001/10 6090/1
PATH: 464/36 5000/5000 5020/545 5054/1 37