kern/78114: [PATCH] Solaris/x86 label structures for GEOM (sect 0 attached)

Wojciech A. Koszek dunstan at freebsd.czest.pl
Sat Feb 26 13:40:13 GMT 2005


>Number:         78114
>Category:       kern
>Synopsis:       [PATCH] Solaris/x86 label structures for GEOM (sect 0 attached)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Feb 26 13:40:12 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Wojciech A. Koszek
>Release:        FreeBSD 5.3-STABLE i386
>Organization:
>Environment:
System: FreeBSD dunstan.freebsd.czest.pl 5.3-STABLE FreeBSD 5.3-STABLE #8: Mon Feb 21 19:30:18 CET 2005 dunstan at dunstan.freebsd.czest.pl:/usr/obj/usr/src/sys/HOME7 i386


>Description:
At the time of writing this text, there is no way to read Solaris/x86 labels on FreeBSD.
There is support for Solaris disks partitioned on Sparc, but none for x86.
I've decided to trace this problem, and results are placed here. Attached
archive [sunx86label.tar.gz] contains:
+ file geom_sunx86label_enc.c which may be used by
  either kernel or user land software. It contains two functions for
  encoding/decoding label inforamtion, and 2 for debugging (which may be removed, of
  course).
+ corrected /sys/sys/sun_disklabel.h (and patch [diff.0.sun_disklabel.h] for
  existing one) which makes it possible to map label sector to structure.
+ sample program readsunlabel.c for reading sector with label information
  (on slice with Solaris/x86 it's 2nd sector).
+ example of sector [BOOT] with label information (as far as I remember, requested
  by phk at .. on freebsd-geom at ..).
+ Makefile to build sample code and test it.

I hope you'll find it useful. Comments needed.

>How-To-Repeat:
Unpack sunx86label.tar.gz from attachment:
	$ tar xzf sunx86label.tar.gz
Build application:
	$ cd sunx86label
	$ make
Run it:
	$ ./readsunlabel
              Sanity: 0x600ddeee
       Label version: 1
         Volume name: <'XYXYXYXY'>
         Sector size: 512
Number of pertitions: 16
          ASCII name: 'DEFAULT cyl 10157 alt 2 hd 64 sec 63'
  Label magic number: '0xdabe'
      Label checksum: '0x75eb'
--
(pcyl = 10159, ncyl = 10157, acyl = 2, bcyl = 0)
(tracks = 64, sectors = 63, interleave = 1, alterc = 0)
(rpm = 3600, skipwrites = 0, skipreads = 0)
Partitions:
Number	Tag	Flag	Cylinder offset		Number of sectors
0	0	0	0			0
1	0	0	0			0
2	5	0	0			40953024
3	2	0	12096			40940928
4	0	0	0			0
5	0	0	0			0
6	0	0	0			0
7	0	0	0			0
8	1	1	0			4032
9	9	1	4032			8064
10	0	0	0			0
11	0	0	0			0
12	0	0	0			0
13	0	0	0			0
14	0	0	0			0
15	0	0	0			0
Magic: 0, t->magic = dabe
Magic: dabe, t->magic = dabe
              Sanity: 0x600ddeee
       Label version: 1
         Volume name: <'XYXYXYXY'>
         Sector size: 512
Number of pertitions: 16
          ASCII name: 'DEFAULT cyl 10157 alt 2 hd 64 sec 63'
  Label magic number: '0xdabe'
      Label checksum: '0x75eb'
--
(pcyl = 10159, ncyl = 10157, acyl = 2, bcyl = 0)
(tracks = 64, sectors = 63, interleave = 1, alterc = 0)
(rpm = 3600, skipwrites = 0, skipreads = 0)
Partitions:
Number	Tag	Flag	Cylinder offset		Number of sectors
0	0	0	0			0
1	0	0	0			0
2	5	0	0			40953024
3	2	0	12096			40940928
4	0	0	0			0
5	0	0	0			0
6	0	0	0			0
7	0	0	0			0
8	1	1	0			4032
9	9	1	4032			8064
10	0	0	0			0
11	0	0	0			0
12	0	0	0			0
13	0	0	0			0
14	0	0	0			0
15	0	0	0			0
(disk doesn't contain swap space). 

Here is an example how can you fetch needed information from Solaris slice.
[..]
dunstan at dunstan:~:% fdisk -3 ad3
[..]
Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 3 is:
sysid 130 (0x82),(Linux swap or Solaris x86)
    start 1987776, size 40961088 (20000 Meg), flag 0
	        beg: cyl 1022/ head 254/ sector 63;
	        end: cyl 1022/ head 254/ sector 63
[..]

dunstan at dunstan:~:% dd if=/dev/ad3s3 bs=512 count=1 skip=1 of=BOOT
1+0 records in
1+0 records out
512 bytes transferred in 0.026144 secs (19584 bytes/sec)

Now running readsunlabel should show your label layout.

>Fix:
Attached patch [diff.0.sun_disklabel.h] should add structures to
/sys/sys/sun_disklabel.h needed by geom_sunx86label_enc.c.
geom_sunx86label_enc.c might be useful while writing GEOM support for
Solaris/x86 labels.


begin 644 sunx86label.tar.gz
M'XL(")EW($(``W-U;G at X-FQA8F5L+G1A<@#M/%USVTARVJVZ![(JN?L'Z=.N
M;5*B2((B*5E>[YJB()M9B50(2K;/<;0 at .91P`@$&`"5K?:ZZ/Y3*4UY3^1UY
MR%/>4I7?D.X9`,0725&2M=DU1Q\$9[I[>GIZIGL&TV./C0_;55WM,GWE<Z5B
ML;A5J0!^2EL5*?CI)Y"*)0G!-BN;$A2E\N9F=04JGXVC0!K;CFHA*_VQ at 4_&
M5+AYY6X[_,]?2;(G_5_8;;4ZGZ,.E$>U7)[:_U*P_XOE*O9_!9]6H/@YF(FF
M+[S_@^E__^MO?OH*/]^\%3\K7__ASC1_YW[^QW^/OOX:/U\45E;^^F^CKQ>E
M\]7*5X+.[U=64OA,GW_]NSNS=V]I3]ZO'1]TH'>MHRY+E2U0=0=*<-Z':AEL
MUH/JYN>L_U^?K*S\"_YQ&>/?#RLKKL3^\+?3</[]/_]G'!S_]1/EL_"VT/R/
MTL+Y?VMK:SG_/T2*]'^A;9K.?=<Q9_XO%BM1^U_9DJ3E_/\0R6W61N_2?G%U
M=94?C7]6+]2\P9R=`N85W/+T+\WG,GV>%!O_;&3:FF-:U_=7Q]SQ7]Z*C/\M
MJ;+T_QXDC2SSSZSGV(61.F*67=BW&-M5]@HCJQ!0C>7P_ZVFZ/B7#<?2F'VO
M=<P;_^5R)>+_5<M293G^'R+M\5['E.;+_X*4EPJ*ZL`^ZT*I"M+FCE3&7RBA
MET9`A^H%&V at ZFPO8UP:#?#&/^G7:U^P+KF'Y\R2TRDZQXJ.=,7-X&E#*4V;T
M\KVYM5E,[2.6J&4^^`VX"L+_TIWT&5-T_'^.->!B^W\5\O_+F\7E^N\A4D+_
MW_L:<+'U'_5_=;-27,[_#Y&6Z[\O.R6._WM>`\X?_YN1\;]5+6XMQ_]#I)NM
M_T at MEE/`;S$EC?_[7@/.'?_%4G3\%S>7^S\/DO:6P_J+3L'Q'UY$WU\=<\:_
M5"Y5(N__MTJEY?[/@Z1O-*.GC_L,OK.O[8)S/6)V_OS[="#;Z6MF+$O7NI$\
MQ&:6981!5R,;+:OIM&8XZ:&J&9#!)U"MLUX.>N>J!6MK^.4RF_Z83MF.->XY
M0,BHG#X^]/4<.,/1LW1*8-!&E*$.F9=ALU[Q744JO<<,HC[HYP"9,BUX#D7,
MP]P!9*A.^.-S*&73J91'`B%6\WP+;!4!F6ZS<.':^CJQAV6#/GXU1\S(>,4Y
M*&:?"=I4^!PV)"*--7_(2#E8K9MCO6\\<3 at 6$!8\LG?P[Q^-U1Q,J&"S.;<9
M+LBL1Y.&98::0LW#_]K/S!QDZ$LV"]]%OJ/T4CW=M!EB$($$+HB>7WM"G9_2
MJ>[/S#(SF6G]L):%Q]@//B_XS#$]60?W[_JLEQ&,/^[K!!0L'%G839EI!:<C
MU4HL948ODQ$JD"6R.<[.%.+32ESJ;G%`9I^^)),8G/^3MVSO7L><^7]K<ZOL
MS_\2O?\KH158OO]_D+2QL0&%L8VK/:M7H$F<_X4U(!79&I=VL/=H:SR]OKX.
MTX"A!,7-G;*T4WI*P*7TBQ>P4<I58;V4VX(7+](`:U`W1]>6=G;N0*:7!>GI
MTU*._F]28:ISSJ#-SICAV&`.P,&OQX9VB<M4S;FFG+JJ:P/3,C0U#U#3=>"D
M;)SA;&9=LGX^H0YDI9R#OS>9=0:OL4][Y^GU)*!*#EZ;?^YIK'<.M3S\:-H_
MLPNBQVEVSC4;;'/@7*D6 at RO5ACZ[9#I.\'WH7G-6Z^9P-':8!<JU[;"A#;)Q
MIAF,X=QS!F>6.1YQ2BBM`_7*PBF-P2ZS+IC.KC&G:UHJ[<#`V. at CC;U:^Z@&
M/1-79BK.R+LOX:FT4:V":O2Y7,N5G"3!>KF:D\J>;/D_!9L(U#T at IFX4UQ"K
M)$IHA&U003<=DB4V".O3>JH.7?7L3#W#9IUKV/@K)BAI9X:);<7>T"RF7Z/$
MJ7^$B1AC`5(WKR:$200(QRY5-,1=#7L%>:7<]`82HRF\0+8!!F.CYV at F8F"6
MV6<%S,0/,`V=R]%F:"&9WK?SO)]N at XCBO#;'O)5<"#:G1+,=2K;+G"N&9GFD
MJPX)QT:K9J*I1>N at .L'V88=C[_6Q at QT3>]ON65J7<4HHXY924$Q=M1!(5(%L
M`$ZL7`,+:93 at -WTVP.Y/*<?-T[T?#VLO&_54I?+TZ7:XJ'E4:W=2V^GU8.:;
M[:K(EZIAZ';M-<\OA;.5QI_D%/I!X=R33JM^>B*WE4:K"1)7FRH?CU74FI*G
M-6_>O-F!/8Z%4L3VT*\!J,A#/@J[UPY#U==(7YUS5"4L9ZJMH2A1?#"VO28'
MJR:_BC.U+3TMA=MVTCIHU@[ETP.Y"9%F=^0W'<I/224L*:QQ87=,.&..J\V:
M(?09U8#TE/J'>L>^T$;8^9;M`$I!L,S5IQ"IFR32VM]7Y`Z)*T7]5%@#<@PT
M3I/H\\8$/*'^!96CHT4"W"J3`+?+0H!!L$O'[)UR_(]I2(WQT9&JIT[*Y at 4#
M73U[EDJ%*J,\F]?VZ1ER@@V&?90H:A$0HW!NHC)'F/,:3RV+>&L>F^NI)*Z(
M#^U9N%"@I&S\Q!)D8IV+X\(PKXQ`O8YZ!I>J/F9VJ)^Y,(^;-45IO&S*>ZGB
MAV(Q4DIJ0/E"^9Z6T0ZL2U*1FX.IL at M1:+>:!V^1A%0,RTZSN5M;X(-?#+A@
MPWS/]6-Z at R\54BE;/W78!^<=ZM9[DD,X-ZA^[ZDW at .I33MIET1<1V;L=O%FB
M#M8%_V2G1!?CBB`V_A")9"!)%2Z$32E7KD2D$.0ZI$'ZZ5`]TWHAXNZ4$E"?
ML#H02UP9 at HQ>]DZ[U))WF^^?$:U at J\:V,&7#KHD&(C,V*"/+%2U*PU8-QO$5
MU2#+;(R'79P.DD"Y\3:-9Z177)!NA@#V^H``39T61>\B4\1[CHF%8UR5$<"D
M$E<VQ`_KT<*$LX3/:-;X0 at 628`W2(0[I<HU3G*]6=F(;A"C>247!C/A*RS3A
M=/S@"DG(/Q4>CIP`/;T+SNM<`2.U..AM#D<1,*K/T8:,E\5DEJ"YA*#:/4WC
MPN(8?%Q[LVG(:.%_;B<'[JSCF41WYIRV&OP8:RPIFS<.HDT['?6N=8V<&G=T
M!.1^?FUS!P0A$D1_:D0P^ZJC at I\7[]Y3-8*@ZFC&##+KL["Z"V'YS)%G=N&B
MB&<88;L\G"04H9PNCON%(W'\!-;PD5DZ4R^9P)E\AX'*%3V.(WBY8%<"A=OW
M'Y*$1<UT)Q6EKC020*S1$,L)P#(=58P08G>H&>CI)B"0(;ZR-,=EE[Z2A^PU
M%1U,'=U,!""?.!F=IO59V%2>C.V.TW)X>A^I.'1+[SWCVY^"')AA[7/:.4%'
M$=@_CU$[T<&(S+ at 17!3W>"AP>^>,?_-&'O48>'NL?&_DTM3ZY#6CK[(V&N62
M#<":37L at ZRYR:&]E!GYXSX:3``[N,T`;*3QG7M4;Z74/,[0+DXB<4&\<6^S.
MW`I+[-S,:>@WS$`/G^:_4^6M<LI[K*'\>%#;E0].7YU2A_S2:^__#RFX_Y-\
M]N[N=<S>_Y&V2EM;X?W_4G'Y_O^!4F%M(YVX_9&X^[$V99=EC8K:#`>A at ZOB
M,7<@:;F/$S`M'FUS;.%RD7+0WU2M:W!7VE>:<PYHM>@3/0^B,C1QV*(70#1R
M0+LK:&&&FN/@S#^RS$N-K\!IX4D[#`-3U\TKFL)Q"NP+IXVH$-Z0.3OT+.4C
MK/%UK,L3WS(8HA)@<VCC at E-5N^8E%;DR(2*8#-/1>BPG5L4ZTB,RDVJ]_8T`
M3UAI3U?17[-(1E"*,X(5!B3B,8+M[(_Y^OIS\`*BE2ZEOME#7]H0YISP"M@?
M)I:C64>?Q])4],5\P?,.(\+!9G@*T'G54$!I[7=>U]HRX/-1NW72V)/W8/<M
M%LI0.^Z\:K6AUMR#>JO9:3=VCSNMM@(__513$/[)$RKB6M9\"_*;H[:L*(`(
MC<.C at P:20;KM6K/3D)4<-)KU@^.]1O-E#I`*-%L=.&@<-CH(UFGEJ#HB%,>$
MUCX<RNWZ*_Q:VVT<-#IO.4/[C4Z3JMLG!H'<[4;]^*#6AJ/C]E%+X=2H66A$
MZ@>UQJ&\EP=D`BL&^41N=D!Y53LX"#83?T.MW)61P]KN`2?%J\%6[C7:<KU#
MS9D\U5%FR-Q!#I0CN=Z@!_F-C"VIM=_F7+**_`_'"(2%1&VOAKX(MBTS1RK8
M(?7CMGQ(_*(<E.-=I=/H''=D>-EJ[2E$"LDK<OND49>59W#04KC`CA4YAY5T
M:KQZI(+2PF)\WCU6&EQNC69';K>/CSJXNLT2H5>MUR at 89+:&V'M<QKCNI3:C
MC%KMMT27Y,&[(`>O7\F8WR:1<JG52!8*2J_>(6H!2*P5Y=D)-!::\LN#QDNY
M69>IM$6$7C<4.8L]UE`(H"%J?EU[R]MXS)M/?86\B<>`ZN9XCT)C'VI[)PUB
MW at 5&/5`:KLZT]HF2<EQ_Y4J?1D$AC2OO\$O17I\-^"O5]/Q7K?0.%8>P:MSR
MW6J!#\,C]([<#7.<'/@$=\5H@]:T+/,*!_'`,H?@&?N`I><-H/>S=_$QZ?VM
M`!TCJ>U30H'G,**WMK0*QPP-'\?N. at AHC<@W$$0>^=#`%^4Y&#^;_BIXS7F6
M3J.'G4YABU\S;FEZJLT7$NB@#]6+X-ZMN["EA=@()<SHW3`)`1<%?1)0GY,Q
M!P.;.7:>OA32*0?9GO4*E#>)ULH9#2''_!TS:/`=9+P]6-CPW\[J&]][*X-L
MEL#6W1?08_BGYP!KF8S?^K5L9 at 3KH/DO@!V.RU<D]-XZN/CXRU_`F5"FTC$1
M15LVM at S(R(WF2>T@&^33Y3',%W5"WM]#(/[6UXE.8O$[[3W2<9)+J,L$TF2=
MC]`ZVRR1)CUV(F79"8(Q`\%(0E##"%(U@*`F(71G('0367(7\G%^1$$0U%N6
MQF'=D@!P8-T>8V12%D#P%_%Q>+\H*!F^ED^0"L\/`.**/@Z%F0$0?PT?!_2+
M(N"T)D^&II(`L-#I&"3/#H`)Y8Z!B=%$\X`WB<2%/U%0*B>:?'*)$YL`<@!O
M[$TH!S9QE5I3AL>/P24E2KQ=.G$&@V8FFE/VQ$LIVCG>Z)G#$;I979W%-I$Y
M<"%IQ+G-"DR3<1BO26(S,PE";/,6W\\2D`>3G4%!N@$%:2:%T at THE*90\#:+
M9Q!P03A^=,Z+["7[LUQ"1>[N<^),-RE,9-+=?9ZE82Y(<B-OKI^)#?344+2.
MZV*\#KX#K;W/TTN at O'@C16]UGA/P5-$F(W%&;E0#O=]:O`K"FE='_V+$_YWB
M'"Z,^$WKB6/>N*[)A+]@54%[D&1BQ<:_-G.<^$"<R"=^:,LS^D5^ABE-3EOZ
M=OMU#^K#S76S^,&]!_1?2. at DJ\<Q1R8'2>Y+%-Z(P1L1>*D:A%=C\.I,^&X,
MOCN;'^$A^,Q,7)<8I*N9/FA`4Z-<3-P4#SKLN$3A?3?%`P_Y+3&9<$?%EX?O
MMD3AT%7Q@%RO)0KA^R@>7,AI28(F'R4([/DL?.]YD%D]).]D!QY]X$">"_/H
M at SA/&7!L/"*^.Q.M+1GJSO6$_*$D-RC@!24:EU^U[Q-5ZKB#DXNU.N3ZS",@
M324 at W8Q`:2J!4H1`?'[S_)LXA5MY/M-9G7 at Y"57Y92Z[8;6..3IQ"D$/:#JZ
M:T/N[@!-;V:R4Y,CI$7\GX4J()?FIC5,W)\;5!'W9F97,\W[6:0JWV;<K*:P
M\S.](M_!B7=_DN]#[DG&=U:R.#T^P-Y,5'$Y!71YN/\5<[_FO_!$MXMVY+WY
M'T))G*W9@>*'L`6(+W`C^`><OCL[H#GI)V,'IH\8`R>3\S8[\-V31]OVD^^G
M4!$S0R(597(49SH;@8G!(]"<'!!AWL&<Z03\R2$NQII2;S3<5CQY9#]))B`\
MR""^D*`PP.*T"N)3/SR)F>)XQ0+9.P>0A.AM8_B(&QM8',S(D,-)MA_]$F/R
MJ$X>N]YCEB@'UA5!YS7!/XV[H`'<H%N9"G#C;XH]$D$I[K87?0MM;'$>O9TH
MES6?"=<I#50W\3X37,R07QB2C=C"XJQXGIT=R.!!;?'ZR7$,U!WP$B.>X)3%
MU`T/(M!*BDYM:`&.C_SC93N1?A::GNJH9ZE]G/=3=>_LD)B<4ZG)4'!EY1*(
MVD&I&K!^'O5'_93_FTJYXT?+)3E5TZWB(O9M44.U at +41<4I?5*3.YTG!\Q_>
MW4[W7<>\^&])BIS_D*K%RC+^\T'24;OU\GDP\#>MM.O*\V\_4L&G?`^2#P6E
M\_[;R:[=SX\L\RP_O/A^.1Y_;2DX_N\]\,]-<\Y_5<HE*1K_75[>__LP*?'\
M5S`.[W["\&X0A;=`$)XX;70_(7CW$8&'1'@!G8<2$4@>G>79N.79N#4HYZ')
M-(Y'Y3P4(SZ2#'-2S+N!@B9]O4*GU^5JJ%[3870>=8*JQHP^EC%2%61E:#H,
MA(P<&A$6DG=/_#C!`>/2<I4+[!'KD6K1Y@/IG$5*90CULNU%SOBUY9=RLZ/\
MY at _Y>>U<GO+[XD[YD5%\D?DF&XU\W\Y+D/%F_BQ4"Y)4$";TVR9S=I6]'0B`
MYRYQ]BV1E=TN%+<+)7PL[U0J.Z5M&*)5E#^,X%MWT'WKWLJV`S.B]#F]I_E2
M7L3F%XI281,?-W=*U9W*%FC#D:`)XISB-]H`[=H at .3HB[05=)I>Z!PW#<<^!
M('/WN%V&!]*I>I9/@NG[BT:_QV#T>PLIO[>(\KD!Y;SWID:3)P633XLE3PXE
M3XPDGQ%('BNB5X2IXH=JL;BW)\LRN)&S\7>`-JS2IO5JGMHD=(J'IS5`'0)Z
M66-5U\DNTN8:R<L]TCH)R%J5JMY.V"H9P%6*+Q?QWJMYGUP=>U3K"Z^/>T<H
M7U0D5`64.ZD&&V`_\<X\8PX_0NJ%C<.$YPFYO7;K$/ID66W7U&(7#J_A;,QL
M'B_O5])S'5#DV2&-T]&LZF2J?6+HLAK80KH"B?Q/9,$:&P:RD$.'!_5=)Y(4
M at DM<H0K\\;G/VA#])772RCO&[&,/3(_8GQZP/S5>7W3G[:/UHPS%8O73B9'Z
M28'ZP:C+T*:C&]_G$!5RDP.AFE&<<*RF$=V')91/S]+!ZH-![+'X?R<>_D\'
ML/R*;WI5`-6YX#T!4ZX)F'5+P-1+`MSJ9]\0,/."@"GW`T2"_D5V*9RMO*X=
M4?9FI`:E3;GE".E:_<=C#EXA4:[V5B?\YG"<DA/NFA-AH**,*QWT;0B_&LX_
MJ?'JML*YKUJ'-`46M\/9M8..4N]PA*?AT&(W3GTBPVC]]5K]%2>I\@!=US;T
MU-XY&]@S\$[>G!R>'AWO$BHCU),/)X<P&G=U]/8M=C8=I]TX(:3!!`FG/.)U
M at I7VPO@35#/2[8=-T;4I'C(_-,=HFLD23.?\IG<]I!/C5C^F9U_ID)YYH<-M
M[G,(!P%S'/XR,HS%C2\'3YPK/,RA*F+_`X'_H?%5X*<IDSD5]S%$.>4'=TA<
MO.%HG.*3<JP1\8!O=,APK8 at 3=PQV@;C^2)0W-HPA40N+Q9T-E!&*AX_/S`M%
MQ(=1YE\C<*M;!"*5W.`Z@`C&_-L`XO,PZ8M_G82K*^'1XOKBL>IF7B$2,663
M^T/NX?J0F]\>LLCE(;>\.V2!JT,6OSGD5A>'+'AOR.VN#5GXUA!AZ-,WOC$D
MP=$(SLRSK at NY]6TABUX6<@^C_(97A2Q^4\C"%X7<>5:<>DW(_%M"%KTDY&YW
MA-SIBI"I-X3,OR#D#O>#W.AZ$!QB=[D<Y.YW@]SR:I`[W0MRJVM!;G\KR/)2
2D&5:IF5:)B_]']8U3J4`@@``
`
end


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list