Anyone, would you try to make GEOM_DDF1(4)?

Norikatsu Shigemura nork at FreeBSD.org
Sun Aug 19 10:11:05 PDT 2007


Hi GEOM Developers.

	I'm using HP Proliant DL140G3 with Adaptec HostRAID (SATA).
	But I couldn't make FreeBSD 6.2-R install CD probe RAID1, so
	I researched DL140G3's RAID system(Software RAID).  As the
	result, I understood that Adaptec HostRAID supports DDF
	format[*1].

	[*1] http://www.snia.org/standards/DDFv1_00.pdf

	I was trying to make geom_ddf1(4), but I couldn't make it,
	it's too hard for me:-(.  So, anyone, would you try to
	make geom_ddf1(4)?  Of course, RAID1 support only OK! :D

	I have two real DDF1 data from configurated SATAs(/dev/ad4
	and /dev/ad6 are RAID1 mirrored) like following way[*2][*3].
	And I confirmed no configured SATAs filled all NUL(0x00) on
	DDF1 Anchor.

	[*2] http://people.freebsd.org/~nork/DDF1/ad4-last6k.img
	     http://people.freebsd.org/~nork/DDF1/ad6-last6k.img
	*NOTE* Please restructure ad?.img from ad?-last6k.img


	I made a test program[*4].  I got a result of /dev/ad4.
	Please see also following[*5].

	[*4] http://people.freebsd.org/~nork/DDF1/ddf1.h
	     http://people.freebsd.org/~nork/DDF1/ddf1_test.c

[*3]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
In real system (RAID1 configured):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# geom disk list ad4
   :
   Mediasize: 80026361856 (75G)
   :
# echo 80026361856/512-65536 | bc
156235952
# dd if=/dev/ad4 bs=512 skip=156235952 | ssh ... 'cat > ad4-last32m.img'
65536+0 records in
   :
# dd if=/dev/ad6 bs=512 skip=156235952 | ssh ... 'cat > ad6-last32m.img'
65536+0 records in
   :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


In my system:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# hexdump -C ad4-last32m.img | head
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
01ffe800  11 de 11 de 50 a0 0d fc  64 6f c1 3a 86 80 82 26  |..P...do:...&|
~~~~~~~~
    :
# echo `printf %d/512 0x01ffe800` | bc
65524
# dd if=ad4-last32m.img of=ad4-last6k bs=512 skip=65524
12+0 records in
12+0 records out
6144 bytes transferred in 0.000361 secs (17021006 bytes/sec)
# dd if=ad6-last32m.img of=ad6-last6k bs=512 skip=65524
12+0 records in
12+0 records out
6144 bytes transferred in 0.000361 secs (17021006 bytes/sec)
# echo 156235952+65524 | bc
156301476
# dd if=ad4-last6k.img bs=512 seek=156235952 of=ad4.img
# dd if=ad6-last6k.img bs=512 seek=156235952 of=ad6.img
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


[*5]
------------------------------------
sizeof struct ddf1_ddf_header       = 512
------------------------------------
Signature                           = 0xde11de11
CRC                                 = 0x77802615
DDF_Header_GUID                     = 64 6f c1 3a 86 80 82 26 64 6f c1 3a b0 74 c1 3a 18 79 c1 3a ff ff ff ff
DDF_rev                             = 30 32 2e 30 30 2e 30 30
Sequence_Number                     = -1
Timestamp                           = -1
Open_Flag                           = 0xff
Foreign_Flag                        = 0xff
Disk_Grouping                       = 255
Primary_Header_LBA                  = 0x000000000950f8a4 (156301476)
Secondary_Header_LBA                = 0xffffffffffffffff (18446744073709551615)
Header_Type                         = 0x0
Workspace_Length                    = 32768
Workspace_LBA                       = 0x00000000095078a4 (156268708)
Max_PD_Entries                      = 15
Max_VD_Entries                      = 4
Max_Partitions                      = 1
Configuration_Record_Length         = 2
Max_Primary_Element_Entries         = 65535
Controller_Data_Section             = 1
Controller_Data_Length              = 1
Physical_Disk_Records_Section       = 2
Physical_Disk_Records_Length        = 2
Virtual_Disk_Records_Section        = 4
Virtual_Disk_Records_Length         = 1
Configuration_Records_Section       = 5
Configuration_Records_Length        = 4
Physical_Disk_Data_Section          = 9
Physical_Disk_Data_Length           = 1
BBM_Log_Section                     = -1
BBM_Log_Length                      = 0
Diagnostic_Space                    = -1
Diagnostic_Space_Length             = 0
Vendor_Specific_Logs_Section        = 10
Vendor_Specific_Logs_Section_Length = 1
------------------------------------
sizeof struct ddf1_controller_data  = 512
------------------------------------
Signature                           = 0xad111111
CRC                                 = 0x8be2d4cc
Controller_GUID                     = 64 6f c1 3a b0 74 c1 3a 18 79 c1 3a 7a 7d c1 3a 41 44 50 54 ff ff ff ff
Controller_Type_Vendor_ID           = 0x8086
Controller_Type_Device_ID           = 0x2682
Controller_Type_Sub_Vendor_ID       = 0x0000
Controller_Type_Sub_Device_ID       = 0x0000
------------------------------------
sizeof struct ddf1_phsical_disk_records  = 64
------------------------------------
Signature                           = 0x22222222
CRC                                 = 0x8da47ea5
Populated_PDEs                      = 2
Max_PDE_Supported                   = 15
------------------------------------
*sizeof struct ddf1_physical_disk_entries  = 64
------------------------------------
PD_GUID                             = 20 20 20 20 20 20 20 20 20 20 20 20 39 4c 52 33 4c c6 95 5a ff ff ff ff
PD_Reference                        = 1839256256
PD_Type                             = 0x2
PD_State                            = 0x1
Configured_Size                     = 155987856
Path_Information                    = 00 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
------------------------------------
*sizeof struct ddf1_physical_disk_entries  = 64
------------------------------------
PD_GUID                             = 20 20 20 20 20 20 20 20 20 20 20 20 39 4c 52 33 cc c7 95 5a ff ff ff ff
PD_Reference                        = 1839269174
PD_Type                             = 0x2
PD_State                            = 0x1
Configured_Size                     = 155987856
Path_Information                    = 01 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
------------------------------------
sizeof struct ddf1_virtual_disk_records  = 64
------------------------------------
Signature                           = 0xdddddddd
CRC                                 = 0xdae2a21a
Populated_VDEs                      = 1
Max_VDE_Supported                   = 4
------------------------------------
*sizeof struct ddf1_virtual_disk_entries  = 64
------------------------------------
VD_GUID                             = 40 35 30 5a 86 80 82 26 20 20 20 20 20 20 20 20 e6 58 a0 6d 3a 35 4a 45
VD_Number                           = 0
VD_Type                             = 0xffffffff
VD_State                            = 0x0
Init_State                          = 0x2
VD_Name                             = DDF1-MIRROR
------------------------------------
sizeof struct ddf1_virtual_disk_configuration_record  = 512
------------------------------------
Signature                           = 0xeeeeeeee
CRC                                 = 0x82e01b58
VD_GUID                             = 40 35 30 5a 86 80 82 26 20 20 20 20 20 20 20 20 e6 58 a0 6d 3a 35 4a 45
Timestamp                           = 2
Sequence_Number                     = 2
Primary_Element_Count               = 2
Strip_Size(Stripe_Size)             = 7
Primary_RAID_Level                  = 1
RAID_Level_Qualifier                = 0
Secondary_Element_Count             = 1
Secondary_Element_Seq               = 0
Secondary_RAID_Level                = 255
Block_Count                         = 155987856
Size                                = 155987856
Cache_Policies_And_Parameters       = 0x0000000000000000
BG_Rate                             = 16
------------------------------------
sizeof struct ddf1_physical_disk_data  = 512
------------------------------------
Signature                           = 0x33333333
CRC                                 = 0xe46196d5
PD_GUID                             = 20 20 20 20 20 20 20 20 20 20 20 20 39 4c 52 33 c6 49 61 5a ff ff ff ff
PD_Reference                        = 1839256256
Forced_Ref_Flag                     = 0xff
Forced_PD_GUID_Flag                 = 0x00


More information about the freebsd-arch mailing list