首页 > *nix技术, 文件系统 > Xfs文件系统磁盘布局之十六:目录文件数据结构(续)

Xfs文件系统磁盘布局之十六:目录文件数据结构(续)

2012年1月10日 发表评论 阅读评论 3,789 次浏览

上一篇实例里讲到“directory block”块存放在startblock指向的逻辑block块内,块号为36(注意我这里“directory block”和“逻辑block”大小一致),先看看其内容:

[root@localhost loop]# /home/lenky/xfs/xfsprogs/db/xfs_db /dev/loop0
xfs_db> fsblock 36
xfs_db> type dir2
xfs_db> p
bhdr.magic = 0x58443242
bhdr.bestfree[0].offset = 0x7e8
bhdr.bestfree[0].length = 0x598
bhdr.bestfree[1].offset = 0
bhdr.bestfree[1].length = 0
bhdr.bestfree[2].offset = 0
bhdr.bestfree[2].length = 0
bu[0].inumber = 137
bu[0].namelen = 1
bu[0].name = "."
bu[0].tag = 0x10
bu[1].inumber = 128
bu[1].namelen = 2
bu[1].name = ".."
bu[1].tag = 0x20
bu[2].inumber = 143
bu[2].namelen = 8
bu[2].name = "atomic.h"
bu[2].tag = 0x30
bu[3].inumber = 166
bu[3].namelen = 8
bu[3].name = "bitops.h"
bu[3].tag = 0x48
bu[4].inumber = 168
bu[4].namelen = 9
bu[4].name = "builddefs"
bu[4].tag = 0x60
bu[5].inumber = 170
bu[5].namelen = 12
bu[5].name = "builddefs.in"
bu[5].tag = 0x78
bu[6].inumber = 173
bu[6].namelen = 11
bu[6].name = "buildmacros"
bu[6].tag = 0x90
bu[7].inumber = 174
bu[7].namelen = 10
bu[7].name = "buildrules"
bu[7].tag = 0xa8
bu[8].inumber = 175
bu[8].namelen = 7
bu[8].name = "cache.h"
bu[8].tag = 0xc0
bu[9].inumber = 178
bu[9].namelen = 9
bu[9].name = "command.h"
bu[9].tag = 0xd8
bu[10].inumber = 185
bu[10].namelen = 8
bu[10].name = "darwin.h"
bu[10].tag = 0xf0
bu[11].inumber = 187
bu[11].namelen = 5
bu[11].name = "dvh.h"
bu[11].tag = 0x108
bu[12].inumber = 191
bu[12].namelen = 9
bu[12].name = "freebsd.h"
bu[12].tag = 0x118
bu[13].inumber = 225
bu[13].namelen = 7
bu[13].name = "fstyp.h"
bu[13].tag = 0x130
bu[14].inumber = 232
bu[14].namelen = 13
bu[14].name = "gnukfreebsd.h"
bu[14].tag = 0x148
bu[15].inumber = 234
bu[15].namelen = 8
bu[15].name = "handle.h"
bu[15].tag = 0x160
bu[16].inumber = 239
bu[16].namelen = 7
bu[16].name = "hlist.h"
bu[16].tag = 0x178
bu[17].inumber = 241
bu[17].namelen = 7
bu[17].name = "input.h"
bu[17].tag = 0x190
bu[18].inumber = 242
bu[18].namelen = 10
bu[18].name = "install-sh"
bu[18].tag = 0x1a8
bu[19].inumber = 244
bu[19].namelen = 6
bu[19].name = "irix.h"
bu[19].tag = 0x1c0
bu[20].inumber = 250
bu[20].namelen = 5
bu[20].name = "jdm.h"
bu[20].tag = 0x1d8
bu[21].inumber = 251
bu[21].namelen = 6
bu[21].name = "kmem.h"
bu[21].tag = 0x1e8
bu[22].inumber = 253
bu[22].namelen = 8
bu[22].name = "libxfs.h"
bu[22].tag = 0x200
bu[23].inumber = 255
bu[23].namelen = 9
bu[23].name = "libxlog.h"
bu[23].tag = 0x218
bu[24].inumber = 256
bu[24].namelen = 7
bu[24].name = "linux.h"
bu[24].tag = 0x230
bu[25].inumber = 259
bu[25].namelen = 6
bu[25].name = "list.h"
bu[25].tag = 0x248
bu[26].inumber = 260
bu[26].namelen = 8
bu[26].name = "Makefile"
bu[26].tag = 0x260
bu[27].inumber = 262
bu[27].namelen = 8
bu[27].name = "parent.h"
bu[27].tag = 0x278
bu[28].inumber = 263
bu[28].namelen = 6
bu[28].name = "path.h"
bu[28].tag = 0x290
bu[29].inumber = 269
bu[29].namelen = 15
bu[29].name = "platform_defs.h"
bu[29].tag = 0x2a8
bu[30].inumber = 272
bu[30].namelen = 18
bu[30].name = "platform_defs.h.in"
bu[30].tag = 0x2c8
bu[31].inumber = 273
bu[31].namelen = 9
bu[31].name = "project.h"
bu[31].tag = 0x2e8
bu[32].inumber = 280
bu[32].namelen = 12
bu[32].name = "radix-tree.h"
bu[32].tag = 0x300
bu[33].inumber = 287
bu[33].namelen = 6
bu[33].name = "swab.h"
bu[33].tag = 0x318
bu[34].inumber = 291
bu[34].namelen = 8
bu[34].name = "volume.h"
bu[34].tag = 0x330
bu[35].inumber = 292
bu[35].namelen = 8
bu[35].name = "xfs_ag.h"
bu[35].tag = 0x348
bu[36].inumber = 295
bu[36].namelen = 17
bu[36].name = "xfs_alloc_btree.h"
bu[36].tag = 0x360
bu[37].inumber = 300
bu[37].namelen = 11
bu[37].name = "xfs_alloc.h"
bu[37].tag = 0x380
bu[38].inumber = 301
bu[38].namelen = 10
bu[38].name = "xfs_arch.h"
bu[38].tag = 0x398
bu[39].inumber = 303
bu[39].namelen = 15
bu[39].name = "xfs_attr_leaf.h"
bu[39].tag = 0x3b0
bu[40].inumber = 306
bu[40].namelen = 13
bu[40].name = "xfs_attr_sf.h"
bu[40].tag = 0x3d0
bu[41].inumber = 310
bu[41].namelen = 9
bu[41].name = "xfs_bit.h"
bu[41].tag = 0x3e8
bu[42].inumber = 313
bu[42].namelen = 16
bu[42].name = "xfs_bmap_btree.h"
bu[42].tag = 0x400
bu[43].inumber = 319
bu[43].namelen = 10
bu[43].name = "xfs_bmap.h"
bu[43].tag = 0x420
bu[44].inumber = 320
bu[44].namelen = 11
bu[44].name = "xfs_btree.h"
bu[44].tag = 0x438
bu[45].inumber = 324
bu[45].namelen = 17
bu[45].name = "xfs_btree_trace.h"
bu[45].tag = 0x450
bu[46].inumber = 329
bu[46].namelen = 14
bu[46].name = "xfs_buf_item.h"
bu[46].tag = 0x470
bu[47].inumber = 331
bu[47].namelen = 14
bu[47].name = "xfs_da_btree.h"
bu[47].tag = 0x490
bu[48].inumber = 336
bu[48].namelen = 11
bu[48].name = "xfs_dfrag.h"
bu[48].tag = 0x4b0
bu[49].inumber = 337
bu[49].namelen = 12
bu[49].name = "xfs_dinode.h"
bu[49].tag = 0x4c8
bu[50].inumber = 341
bu[50].namelen = 16
bu[50].name = "xfs_dir2_block.h"
bu[50].tag = 0x4e0
bu[51].inumber = 346
bu[51].namelen = 15
bu[51].name = "xfs_dir2_data.h"
bu[51].tag = 0x500
bu[52].inumber = 2400
bu[52].namelen = 10
bu[52].name = "xfs_dir2.h"
bu[52].tag = 0x520
bu[53].inumber = 2401
bu[53].namelen = 15
bu[53].name = "xfs_dir2_leaf.h"
bu[53].tag = 0x538
bu[54].inumber = 2402
bu[54].namelen = 15
bu[54].name = "xfs_dir2_node.h"
bu[54].tag = 0x558
bu[55].inumber = 2403
bu[55].namelen = 13
bu[55].name = "xfs_dir2_sf.h"
bu[55].tag = 0x578
bu[56].inumber = 2405
bu[56].namelen = 14
bu[56].name = "xfs_dir_leaf.h"
bu[56].tag = 0x590
bu[57].inumber = 2406
bu[57].namelen = 12
bu[57].name = "xfs_dir_sf.h"
bu[57].tag = 0x5b0
bu[58].inumber = 2407
bu[58].namelen = 18
bu[58].name = "xfs_extfree_item.h"
bu[58].tag = 0x5c8
bu[59].inumber = 2408
bu[59].namelen = 8
bu[59].name = "xfs_fs.h"
bu[59].tag = 0x5e8
bu[60].inumber = 2409
bu[60].namelen = 5
bu[60].name = "xfs.h"
bu[60].tag = 0x600
bu[61].inumber = 2410
bu[61].namelen = 18
bu[61].name = "xfs_ialloc_btree.h"
bu[61].tag = 0x610
bu[62].inumber = 2411
bu[62].namelen = 12
bu[62].name = "xfs_ialloc.h"
bu[62].tag = 0x630
bu[63].inumber = 2412
bu[63].namelen = 11
bu[63].name = "xfs_inode.h"
bu[63].tag = 0x648
bu[64].inumber = 2413
bu[64].namelen = 16
bu[64].name = "xfs_inode_item.h"
bu[64].tag = 0x660
bu[65].inumber = 2414
bu[65].namelen = 10
bu[65].name = "xfs_inum.h"
bu[65].tag = 0x680
bu[66].inumber = 2415
bu[66].namelen = 9
bu[66].name = "xfs_log.h"
bu[66].tag = 0x698
bu[67].inumber = 2416
bu[67].namelen = 14
bu[67].name = "xfs_log_priv.h"
bu[67].tag = 0x6b0
bu[68].inumber = 2417
bu[68].namelen = 17
bu[68].name = "xfs_log_recover.h"
bu[68].tag = 0x6d0
bu[69].inumber = 2418
bu[69].namelen = 14
bu[69].name = "xfs_metadump.h"
bu[69].tag = 0x6f0
bu[70].inumber = 2419
bu[70].namelen = 11
bu[70].name = "xfs_mount.h"
bu[70].tag = 0x710
bu[71].inumber = 2420
bu[71].namelen = 11
bu[71].name = "xfs_quota.h"
bu[71].tag = 0x728
bu[72].inumber = 2421
bu[72].namelen = 13
bu[72].name = "xfs_rtalloc.h"
bu[72].tag = 0x740
bu[73].inumber = 2422
bu[73].namelen = 8
bu[73].name = "xfs_sb.h"
bu[73].tag = 0x758
bu[74].inumber = 2423
bu[74].namelen = 11
bu[74].name = "xfs_trace.h"
bu[74].tag = 0x770
bu[75].inumber = 2424
bu[75].namelen = 11
bu[75].name = "xfs_trans.h"
bu[75].tag = 0x788
bu[76].inumber = 2425
bu[76].namelen = 17
bu[76].name = "xfs_trans_space.h"
bu[76].tag = 0x7a0
bu[77].inumber = 2426
bu[77].namelen = 11
bu[77].name = "xfs_types.h"
bu[77].tag = 0x7c0
bu[78].inumber = 2427
bu[78].namelen = 5
bu[78].name = "xqm.h"
bu[78].tag = 0x7d8
bu[79].freetag = 0xffff
bu[79].length = 0x598
bu[79].tag = 0x7e8
bleaf[0].hashval = 0x2e
bleaf[0].address = 0x2
bleaf[1].hashval = 0x172e
bleaf[1].address = 0x4
bleaf[2].hashval = 0x752b7c8
bleaf[2].address = 0x59
bleaf[3].hashval = 0x790d582
bleaf[3].address = 0x8a
bleaf[4].hashval = 0xebcb01f
bleaf[4].address = 0x32
bleaf[5].hashval = 0x122449b7
bleaf[5].address = 0xc6
bleaf[6].hashval = 0x181c9812
bleaf[6].address = 0x7a
bleaf[7].hashval = 0x1d268212
bleaf[7].address = 0xaf
bleaf[8].hashval = 0x1e9a14ee
bleaf[8].address = 0x52
bleaf[9].hashval = 0x1fe71197
bleaf[9].address = 0x76
bleaf[10].hashval = 0x21bf2944
bleaf[10].address = 0xb6
bleaf[11].hashval = 0x235fe9a7
bleaf[11].address = 0x99
bleaf[12].hashval = 0x236caad2
bleaf[12].address = 0x35
bleaf[13].hashval = 0x2c98a83e
bleaf[13].address = 0x5d
bleaf[14].hashval = 0x2d3e1427
bleaf[14].address = 0x38
bleaf[15].hashval = 0x2e62be24
bleaf[15].address = 0xe2
bleaf[16].hashval = 0x2e72d415
bleaf[16].address = 0xc
bleaf[17].hashval = 0x31638a36
bleaf[17].address = 0x6c
bleaf[18].hashval = 0x358de20b
bleaf[18].address = 0xcc
bleaf[19].hashval = 0x389d8ce1
bleaf[19].address = 0xe8
bleaf[20].hashval = 0x39c7d0c9
bleaf[20].address = 0xab
bleaf[21].hashval = 0x3a9856e1
bleaf[21].address = 0xb9
bleaf[22].hashval = 0x3d18d866
bleaf[22].address = 0x18
bleaf[23].hashval = 0x41fa7624
bleaf[23].address = 0x80
bleaf[24].hashval = 0x4547b8bd
bleaf[24].address = 0x60
bleaf[25].hashval = 0x489c8046
bleaf[25].address = 0x23
bleaf[26].hashval = 0x4a9d685b
bleaf[26].address = 0x73
bleaf[27].hashval = 0x4d48d01e
bleaf[27].address = 0x2c
bleaf[28].hashval = 0x4eda176e
bleaf[28].address = 0x21
bleaf[29].hashval = 0x4f3d8cf7
bleaf[29].address = 0x26
bleaf[30].hashval = 0x533937ec
bleaf[30].address = 0x9c
bleaf[31].hashval = 0x55f0d996
bleaf[31].address = 0x7d
bleaf[32].hashval = 0x5b6881e5
bleaf[32].address = 0x15
bleaf[33].hashval = 0x5c41f13b
bleaf[33].address = 0x4c
bleaf[34].hashval = 0x5d3c90fe
bleaf[34].address = 0x4f
bleaf[35].hashval = 0x5d54e80f
bleaf[35].address = 0x66
bleaf[36].hashval = 0x5f06c2fc
bleaf[36].address = 0x87
bleaf[37].hashval = 0x5f865a6c
bleaf[37].address = 0x96
bleaf[38].hashval = 0x60c22c36
bleaf[38].address = 0xda
bleaf[39].hashval = 0x6e631acd
bleaf[39].address = 0xf1
bleaf[40].hashval = 0x6fc69acd
bleaf[40].address = 0xee
bleaf[41].hashval = 0x7c3894f7
bleaf[41].address = 0x63
bleaf[42].hashval = 0x7df210ff
bleaf[42].address = 0x1e
bleaf[43].hashval = 0x7e06a006
bleaf[43].address = 0x1b
bleaf[44].hashval = 0x7e3be7ba
bleaf[44].address = 0xde
bleaf[45].hashval = 0x7f031a94
bleaf[45].address = 0xf8
bleaf[46].hashval = 0x82ae7ab4
bleaf[46].address = 0xf
bleaf[47].hashval = 0x849c9f1a
bleaf[47].address = 0xd6
bleaf[48].hashval = 0x885c281a
bleaf[48].address = 0xd0
bleaf[49].hashval = 0x8b68ab3e
bleaf[49].address = 0x92
bleaf[50].hashval = 0x8c05707f
bleaf[50].address = 0x40
bleaf[51].hashval = 0x8cdcd76f
bleaf[51].address = 0xc0
bleaf[52].hashval = 0x8d278ef5
bleaf[52].address = 0xe5
bleaf[53].hashval = 0x8e3b576f
bleaf[53].address = 0xfb
bleaf[54].hashval = 0x8f26ee2d
bleaf[54].address = 0xc9
bleaf[55].hashval = 0x90f00d57
bleaf[55].address = 0xf4
bleaf[56].hashval = 0x996710d9
bleaf[56].address = 0xa7
bleaf[57].hashval = 0x9e7cb40e
bleaf[57].address = 0x2f
bleaf[58].hashval = 0x9e7d140e
bleaf[58].address = 0x49
bleaf[59].hashval = 0xa12a5cae
bleaf[59].address = 0x43
bleaf[60].hashval = 0xac9b576e
bleaf[60].address = 0x3b
bleaf[61].hashval = 0xb5341996
bleaf[61].address = 0xd3
bleaf[62].hashval = 0xbadb6842
bleaf[62].address = 0x84
bleaf[63].hashval = 0xbd7da087
bleaf[63].address = 0xc2
bleaf[64].hashval = 0xbe474e3d
bleaf[64].address = 0x70
bleaf[65].hashval = 0xc819303a
bleaf[65].address = 0x55
bleaf[66].hashval = 0xcee15d33
bleaf[66].address = 0x29
bleaf[67].hashval = 0xdbc6d099
bleaf[67].address = 0xa0
bleaf[68].hashval = 0xdcbb5436
bleaf[68].address = 0x3d
bleaf[69].hashval = 0xddfb0416
bleaf[69].address = 0x6
bleaf[70].hashval = 0xeebfa426
bleaf[70].address = 0x46
bleaf[71].hashval = 0xf3b29fff
bleaf[71].address = 0xb2
bleaf[72].hashval = 0xf5a53c27
bleaf[72].address = 0x12
bleaf[73].hashval = 0xf8abe872
bleaf[73].address = 0xa4
bleaf[74].hashval = 0xfc2d4cf5
bleaf[74].address = 0xbd
bleaf[75].hashval = 0xfcc84cf5
bleaf[75].address = 0x69
bleaf[76].hashval = 0xfe890cf5
bleaf[76].address = 0xeb
bleaf[77].hashval = 0xfed970ce
bleaf[77].address = 0x9
bleaf[78].hashval = 0xff185fd5
bleaf[78].address = 0x8e
btail.count = 79
btail.stale = 0
xfs_db> q
[root@localhost loop]# hexdump -C -s 147456 -n 4096 /dev/loop0
00024000  58 44 32 42 07 e8 05 98  00 00 00 00 00 00 00 00  |XD2B............|
00024010  00 00 00 00 00 00 00 89  01 2e 00 00 00 00 00 10  |................|
00024020  00 00 00 00 00 00 00 80  02 2e 2e 00 00 00 00 20  |............... |
00024030  00 00 00 00 00 00 00 8f  08 61 74 6f 6d 69 63 2e  |.........atomic.|
00024040  68 00 00 00 00 00 00 30  00 00 00 00 00 00 00 a6  |h......0........|
00024050  08 62 69 74 6f 70 73 2e  68 00 00 00 00 00 00 48  |.bitops.h......H|
00024060  00 00 00 00 00 00 00 a8  09 62 75 69 6c 64 64 65  |.........buildde|
00024070  66 73 00 00 00 00 00 60  00 00 00 00 00 00 00 aa  |fs.....`........|
00024080  0c 62 75 69 6c 64 64 65  66 73 2e 69 6e 00 00 78  |.builddefs.in..x|
00024090  00 00 00 00 00 00 00 ad  0b 62 75 69 6c 64 6d 61  |.........buildma|
000240a0  63 72 6f 73 00 00 00 90  00 00 00 00 00 00 00 ae  |cros............|
000240b0  0a 62 75 69 6c 64 72 75  6c 65 73 00 00 00 00 a8  |.buildrules.....|
000240c0  00 00 00 00 00 00 00 af  07 63 61 63 68 65 2e 68  |.........cache.h|
000240d0  00 00 00 00 00 00 00 c0  00 00 00 00 00 00 00 b2  |................|
000240e0  09 63 6f 6d 6d 61 6e 64  2e 68 00 00 00 00 00 d8  |.command.h......|
000240f0  00 00 00 00 00 00 00 b9  08 64 61 72 77 69 6e 2e  |.........darwin.|
00024100  68 00 00 00 00 00 00 f0  00 00 00 00 00 00 00 bb  |h...............|
00024110  05 64 76 68 2e 68 01 08  00 00 00 00 00 00 00 bf  |.dvh.h..........|
00024120  09 66 72 65 65 62 73 64  2e 68 6d 65 6d 2e 01 18  |.freebsd.hmem...|
00024130  00 00 00 00 00 00 00 e1  07 66 73 74 79 70 2e 68  |.........fstyp.h|
00024140  07 6b 6d 65 6d 2e 01 30  00 00 00 00 00 00 00 e8  |.kmem..0........|
00024150  0d 67 6e 75 6b 66 72 65  65 62 73 64 2e 68 01 48  |.gnukfreebsd.h.H|
00024160  00 00 00 00 00 00 00 ea  08 68 61 6e 64 6c 65 2e  |.........handle.|
00024170  68 6c 69 62 78 66 01 60  00 00 00 00 00 00 00 ef  |hlibxf.`........|
00024180  07 68 6c 69 73 74 2e 68  07 6c 69 6e 75 78 01 78  |.hlist.h.linux.x|
00024190  00 00 00 00 00 00 00 f1  07 69 6e 70 75 74 2e 68  |.........input.h|
000241a0  08 6c 69 6e 75 78 01 90  00 00 00 00 00 00 00 f2  |.linux..........|
000241b0  0a 69 6e 73 74 61 6c 6c  2d 73 68 6e 75 78 01 a8  |.install-shnux..|
000241c0  00 00 00 00 00 00 00 f4  06 69 72 69 78 2e 68 f4  |.........irix.h.|
000241d0  09 6c 6f 67 69 74 01 c0  00 00 00 00 00 00 00 fa  |.logit..........|
000241e0  05 6a 64 6d 2e 68 01 d8  00 00 00 00 00 00 00 fb  |.jdm.h..........|
000241f0  06 6b 6d 65 6d 2e 68 e0  ff ff 00 18 00 00 01 e8  |.kmem.h.........|
00024200  00 00 00 00 00 00 00 fd  08 6c 69 62 78 66 73 2e  |.........libxfs.|
00024210  68 00 00 00 00 00 02 00  00 00 00 00 00 00 00 ff  |h...............|
00024220  09 6c 69 62 78 6c 6f 67  2e 68 00 00 00 00 02 18  |.libxlog.h......|
00024230  00 00 00 00 00 00 01 00  07 6c 69 6e 75 78 2e 68  |.........linux.h|
00024240  ff ff 00 30 00 00 02 30  00 00 00 00 00 00 01 03  |...0...0........|
00024250  06 6c 69 73 74 2e 68 40  ff ff 00 18 00 00 02 48  |.list.h@.......H|
00024260  00 00 00 00 00 00 01 04  08 4d 61 6b 65 66 69 6c  |.........Makefil|
00024270  65 00 00 00 00 00 02 60  00 00 00 00 00 00 01 06  |e......`........|
00024280  08 70 61 72 65 6e 74 2e  68 ff 00 30 00 00 02 78  |.parent.h..0...x|
00024290  00 00 00 00 00 00 01 07  06 70 61 74 68 2e 68 88  |.........path.h.|
000242a0  ff ff 00 18 00 00 02 90  00 00 00 00 00 00 01 0d  |................|
000242b0  0f 70 6c 61 74 66 6f 72  6d 5f 64 65 66 73 2e 68  |.platform_defs.h|
000242c0  07 74 72 61 6e 73 02 a8  00 00 00 00 00 00 01 10  |.trans..........|
000242d0  12 70 6c 61 74 66 6f 72  6d 5f 64 65 66 73 2e 68  |.platform_defs.h|
000242e0  2e 69 6e 00 00 00 02 c8  00 00 00 00 00 00 01 11  |.in.............|
000242f0  09 70 72 6f 6a 65 63 74  2e 68 00 00 00 00 02 e8  |.project.h......|
00024300  00 00 00 00 00 00 01 18  0c 72 61 64 69 78 2d 74  |.........radix-t|
00024310  72 65 65 2e 68 00 03 00  00 00 00 00 00 00 01 1f  |ree.h...........|
00024320  06 73 77 61 62 2e 68 6f  00 00 00 00 00 00 03 18  |.swab.ho........|
00024330  00 00 00 00 00 00 01 23  08 76 6f 6c 75 6d 65 2e  |.......#.volume.|
00024340  68 00 00 00 00 00 03 30  00 00 00 00 00 00 01 24  |h......0.......$|
00024350  08 78 66 73 5f 61 67 2e  68 63 5f 62 74 72 03 48  |.xfs_ag.hc_btr.H|
00024360  00 00 00 00 00 00 01 27  11 78 66 73 5f 61 6c 6c  |.......'.xfs_all|
00024370  6f 63 5f 62 74 72 65 65  2e 68 5f 62 74 72 03 60  |oc_btree.h_btr.`|
00024380  00 00 00 00 00 00 01 2c  0b 78 66 73 5f 61 6c 6c  |.......,.xfs_all|
00024390  6f 63 2e 68 5f 61 03 80  00 00 00 00 00 00 01 2d  |oc.h_a.........-|
000243a0  0a 78 66 73 5f 61 72 63  68 2e 68 00 00 00 03 98  |.xfs_arch.h.....|
000243b0  00 00 00 00 00 00 01 2f  0f 78 66 73 5f 61 74 74  |......./.xfs_att|
000243c0  72 5f 6c 65 61 66 2e 68  0c 78 66 73 5f 61 03 b0  |r_leaf.h.xfs_a..|
000243d0  00 00 00 00 00 00 01 32  0d 78 66 73 5f 61 74 74  |.......2.xfs_att|
000243e0  72 5f 73 66 2e 68 03 d0  00 00 00 00 00 00 01 36  |r_sf.h.........6|
000243f0  09 78 66 73 5f 62 69 74  2e 68 66 73 5f 61 03 e8  |.xfs_bit.hfs_a..|
00024400  00 00 00 00 00 00 01 39  10 78 66 73 5f 62 6d 61  |.......9.xfs_bma|
00024410  70 5f 62 74 72 65 65 2e  68 5f 6c 65 61 66 04 00  |p_btree.h_leaf..|
00024420  00 00 00 00 00 00 01 3f  0a 78 66 73 5f 62 6d 61  |.......?.xfs_bma|
00024430  70 2e 68 73 5f 61 04 20  00 00 00 00 00 00 01 40  |p.hs_a. .......@|
00024440  0b 78 66 73 5f 62 74 72  65 65 2e 68 00 00 04 38  |.xfs_btree.h...8|
00024450  00 00 00 00 00 00 01 44  11 78 66 73 5f 62 74 72  |.......D.xfs_btr|
00024460  65 65 5f 74 72 61 63 65  2e 68 00 00 00 00 04 50  |ee_trace.h.....P|
00024470  00 00 00 00 00 00 01 49  0e 78 66 73 5f 62 75 66  |.......I.xfs_buf|
00024480  5f 69 74 65 6d 2e 68 49  0a 78 66 73 5f 61 04 70  |_item.hI.xfs_a.p|
00024490  00 00 00 00 00 00 01 4b  0e 78 66 73 5f 64 61 5f  |.......K.xfs_da_|
000244a0  62 74 72 65 65 2e 68 61  70 5f 62 74 72 65 04 90  |btree.hap_btre..|
000244b0  00 00 00 00 00 00 01 50  0b 78 66 73 5f 64 66 72  |.......P.xfs_dfr|
000244c0  61 67 2e 68 5f 62 04 b0  00 00 00 00 00 00 01 51  |ag.h_b.........Q|
000244d0  0c 78 66 73 5f 64 69 6e  6f 64 65 2e 68 00 04 c8  |.xfs_dinode.h...|
000244e0  00 00 00 00 00 00 01 55  10 78 66 73 5f 64 69 72  |.......U.xfs_dir|
000244f0  32 5f 62 6c 6f 63 6b 2e  68 00 00 00 00 00 04 e0  |2_block.h.......|
00024500  00 00 00 00 00 00 01 5a  0f 78 66 73 5f 64 69 72  |.......Z.xfs_dir|
00024510  32 5f 64 61 74 61 2e 68  0b 78 66 73 5f 62 05 00  |2_data.h.xfs_b..|
00024520  00 00 00 00 00 00 09 60  0a 78 66 73 5f 64 69 72  |.......`.xfs_dir|
00024530  32 2e 68 73 5f 62 05 20  00 00 00 00 00 00 09 61  |2.hs_b. .......a|
00024540  0f 78 66 73 5f 64 69 72  32 5f 6c 65 61 66 2e 68  |.xfs_dir2_leaf.h|
00024550  65 65 2e 63 00 00 05 38  00 00 00 00 00 00 09 62  |ee.c...8.......b|
00024560  0f 78 66 73 5f 64 69 72  32 5f 6e 6f 64 65 2e 68  |.xfs_dir2_node.h|
00024570  ff ff 00 18 00 00 05 58  00 00 00 00 00 00 09 63  |.......X.......c|
00024580  0d 78 66 73 5f 64 69 72  32 5f 73 66 2e 68 05 78  |.xfs_dir2_sf.h.x|
00024590  00 00 00 00 00 00 09 65  0e 78 66 73 5f 64 69 72  |.......e.xfs_dir|
000245a0  5f 6c 65 61 66 2e 68 88  ff ff 00 40 00 00 05 90  |_leaf.h....@....|
000245b0  00 00 00 00 00 00 09 66  0c 78 66 73 5f 64 69 72  |.......f.xfs_dir|
000245c0  5f 73 66 2e 68 00 05 b0  00 00 00 00 00 00 09 67  |_sf.h..........g|
000245d0  12 78 66 73 5f 65 78 74  66 72 65 65 5f 69 74 65  |.xfs_extfree_ite|
000245e0  6d 2e 68 00 00 00 05 c8  00 00 00 00 00 00 09 68  |m.h............h|
000245f0  08 78 66 73 5f 66 73 2e  68 5f 62 6c 6f 63 05 e8  |.xfs_fs.h_bloc..|
00024600  00 00 00 00 00 00 09 69  05 78 66 73 2e 68 06 00  |.......i.xfs.h..|
00024610  00 00 00 00 00 00 09 6a  12 78 66 73 5f 69 61 6c  |.......j.xfs_ial|
00024620  6c 6f 63 5f 62 74 72 65  65 2e 68 20 00 00 06 10  |loc_btree.h ....|
00024630  00 00 00 00 00 00 09 6b  0c 78 66 73 5f 69 61 6c  |.......k.xfs_ial|
00024640  6c 6f 63 2e 68 00 06 30  00 00 00 00 00 00 09 6c  |loc.h..0.......l|
00024650  0b 78 66 73 5f 69 6e 6f  64 65 2e 68 00 00 06 48  |.xfs_inode.h...H|
00024660  00 00 00 00 00 00 09 6d  10 78 66 73 5f 69 6e 6f  |.......m.xfs_ino|
00024670  64 65 5f 69 74 65 6d 2e  68 00 00 00 00 00 06 60  |de_item.h......`|
00024680  00 00 00 00 00 00 09 6e  0a 78 66 73 5f 69 6e 75  |.......n.xfs_inu|
00024690  6d 2e 68 61 74 61 06 80  00 00 00 00 00 00 09 6f  |m.hata.........o|
000246a0  09 78 66 73 5f 6c 6f 67  2e 68 66 73 5f 64 06 98  |.xfs_log.hfs_d..|
000246b0  00 00 00 00 00 00 09 70  0e 78 66 73 5f 6c 6f 67  |.......p.xfs_log|
000246c0  5f 70 72 69 76 2e 68 6f  0f 78 66 73 5f 64 06 b0  |_priv.ho.xfs_d..|
000246d0  00 00 00 00 00 00 09 71  11 78 66 73 5f 6c 6f 67  |.......q.xfs_log|
000246e0  5f 72 65 63 6f 76 65 72  2e 68 66 73 5f 64 06 d0  |_recover.hfs_d..|
000246f0  00 00 00 00 00 00 09 72  0e 78 66 73 5f 6d 65 74  |.......r.xfs_met|
00024700  61 64 75 6d 70 2e 68 71  0f 78 66 73 5f 64 06 f0  |adump.hq.xfs_d..|
00024710  00 00 00 00 00 00 09 73  0b 78 66 73 5f 6d 6f 75  |.......s.xfs_mou|
00024720  6e 74 2e 68 00 00 07 10  00 00 00 00 00 00 09 74  |nt.h...........t|
00024730  0b 78 66 73 5f 71 75 6f  74 61 2e 68 00 00 07 28  |.xfs_quota.h...(|
00024740  00 00 00 00 00 00 09 75  0d 78 66 73 5f 72 74 61  |.......u.xfs_rta|
00024750  6c 6c 6f 63 2e 68 07 40  00 00 00 00 00 00 09 76  |lloc.h.@.......v|
00024760  08 78 66 73 5f 73 62 2e  68 5f 6e 6f 64 65 07 58  |.xfs_sb.h_node.X|
00024770  00 00 00 00 00 00 09 77  0b 78 66 73 5f 74 72 61  |.......w.xfs_tra|
00024780  63 65 2e 68 5f 64 07 70  00 00 00 00 00 00 09 78  |ce.h_d.p.......x|
00024790  0b 78 66 73 5f 74 72 61  6e 73 2e 68 00 00 07 88  |.xfs_trans.h....|
000247a0  00 00 00 00 00 00 09 79  11 78 66 73 5f 74 72 61  |.......y.xfs_tra|
000247b0  6e 73 5f 73 70 61 63 65  2e 68 66 73 5f 64 07 a0  |ns_space.hfs_d..|
000247c0  00 00 00 00 00 00 09 7a  0b 78 66 73 5f 74 79 70  |.......z.xfs_typ|
000247d0  65 73 2e 68 5f 64 07 c0  00 00 00 00 00 00 09 7b  |es.h_d.........{|
000247e0  05 78 71 6d 2e 68 07 d8  ff ff 05 98 00 00 09 79  |.xqm.h.........y|
000247f0  0d 78 66 73 5f 64 69 72  32 5f 73 66 2e 6f 00 30  |.xfs_dir2_sf.o.0|
00024800  00 00 00 00 00 00 09 7a  05 78 66 73 2e 68 00 30  |.......z.xfs.h.0|
00024810  00 00 00 00 00 00 09 7b  12 78 66 73 5f 69 61 6c  |.......{.xfs_ial|
00024820  6c 6f 63 5f 62 74 72 65  65 2e 63 00 00 00 08 10  |loc_btree.c.....|
00024830  ff ff 00 40 00 00 09 7c  13 78 66 73 5f 69 61 6c  |...@...|.xfs_ial|
00024840  6c 6f 63 5f 62 74 72 65  65 2e 6c 6f 00 00 08 30  |loc_btree.lo...0|
00024850  ff ff 00 20 00 00 09 7d  12 78 66 73 5f 69 61 6c  |... ...}.xfs_ial|
00024860  6c 6f 63 5f 62 74 72 65  65 2e 6f 00 00 00 00 30  |loc_btree.o....0|
00024870  00 00 00 00 00 00 09 7e  0c 78 66 73 5f 69 61 6c  |.......~.xfs_ial|
00024880  6c 6f 63 2e 63 00 08 70  ff ff 00 30 00 00 09 7f  |loc.c..p...0....|
00024890  0d 78 66 73 5f 69 61 6c  6c 6f 63 2e 6c 6f 08 88  |.xfs_ialloc.lo..|
000248a0  ff ff 00 18 00 00 09 80  0c 78 66 73 5f 69 61 6c  |.........xfs_ial|
000248b0  6c 6f 63 2e 6f 00 00 30  00 00 00 00 00 00 09 81  |loc.o..0........|
000248c0  0b 78 66 73 5f 69 6e 6f  64 65 2e 63 00 00 08 b8  |.xfs_inode.c....|
000248d0  ff ff 00 30 00 00 09 82  0c 78 66 73 5f 69 6e 6f  |...0.....xfs_ino|
000248e0  64 65 2e 6c 6f 00 08 d0  ff ff 00 18 00 00 09 83  |de.lo...........|
000248f0  0b 78 66 73 5f 69 6e 6f  64 65 2e 6f 00 00 00 30  |.xfs_inode.o...0|
00024900  00 00 00 00 00 00 09 84  0b 78 66 73 5f 6d 6f 75  |.........xfs_mou|
00024910  6e 74 2e 63 00 00 09 00  ff ff 00 30 00 00 09 85  |nt.c.......0....|
00024920  0c 78 66 73 5f 6d 6f 75  6e 74 2e 6c 6f 00 09 18  |.xfs_mount.lo...|
00024930  ff ff 00 18 00 00 09 86  0b 78 66 73 5f 6d 6f 75  |.........xfs_mou|
00024940  6e 74 2e 6f 00 00 00 30  00 00 00 00 00 00 09 87  |nt.o...0........|
00024950  0d 78 66 73 5f 72 74 61  6c 6c 6f 63 2e 63 09 48  |.xfs_rtalloc.c.H|
00024960  ff ff 00 38 00 00 09 88  0e 78 66 73 5f 72 74 61  |...8.....xfs_rta|
00024970  6c 6c 6f 63 2e 6c 6f 00  00 00 00 00 00 00 09 60  |lloc.lo........`|
00024980  ff ff 00 18 00 00 09 89  0d 78 66 73 5f 72 74 61  |.........xfs_rta|
00024990  6c 6c 6f 63 2e 6f 00 30  00 00 00 00 00 00 09 8a  |lloc.o.0........|
000249a0  0b 78 66 73 5f 74 72 61  6e 73 2e 63 00 00 09 98  |.xfs_trans.c....|
000249b0  ff ff 06 50 00 00 09 8b  0c 78 66 73 5f 74 72 61  |...P.....xfs_tra|
000249c0  6e 73 2e 6c 6f 00 09 b0  ff ff 00 18 00 00 09 8c  |ns.lo...........|
000249d0  0b 78 66 73 5f 74 72 61  6e 73 2e 6f 00 00 09 b0  |.xfs_trans.o....|
000249e0  00 00 00 00 00 00 09 8d  08 61 74 6f 6d 69 63 2e  |.........atomic.|
000249f0  68 00 00 00 00 00 09 b0  00 00 00 00 00 00 09 8e  |h...............|
00024a00  08 62 69 74 6f 70 73 2e  68 00 00 00 00 00 09 b0  |.bitops.h.......|
00024a10  00 00 00 00 00 00 09 8f  09 62 75 69 6c 64 64 65  |.........buildde|
00024a20  66 73 00 00 00 00 09 b0  00 00 00 00 00 00 09 90  |fs..............|
00024a30  0c 62 75 69 6c 64 64 65  66 73 2e 69 6e 00 09 b0  |.builddefs.in...|
00024a40  00 00 00 00 00 00 09 91  0b 62 75 69 6c 64 6d 61  |.........buildma|
00024a50  63 72 6f 73 00 00 09 b0  00 00 00 00 00 00 09 92  |cros............|
00024a60  0a 62 75 69 6c 64 72 75  6c 65 73 00 00 00 09 b0  |.buildrules.....|
00024a70  00 00 00 00 00 00 09 93  07 63 61 63 68 65 2e 68  |.........cache.h|
00024a80  00 00 00 00 00 00 09 b0  00 00 00 00 00 00 09 94  |................|
00024a90  09 63 6f 6d 6d 61 6e 64  2e 68 00 00 00 00 09 b0  |.command.h......|
00024aa0  00 00 00 00 00 00 09 95  08 64 61 72 77 69 6e 2e  |.........darwin.|
00024ab0  68 00 00 00 00 00 09 b0  00 00 00 00 00 00 09 96  |h...............|
00024ac0  05 64 76 68 2e 68 09 b0  00 00 00 00 00 00 09 97  |.dvh.h..........|
00024ad0  09 66 72 65 65 62 73 64  2e 68 00 00 00 00 09 b0  |.freebsd.h......|
00024ae0  00 00 00 00 00 00 09 98  07 66 73 74 79 70 2e 68  |.........fstyp.h|
00024af0  00 00 00 00 00 00 09 b0  00 00 00 00 00 00 09 99  |................|
00024b00  0d 67 6e 75 6b 66 72 65  65 62 73 64 2e 68 09 b0  |.gnukfreebsd.h..|
00024b10  00 00 00 00 00 00 09 9a  08 68 61 6e 64 6c 65 2e  |.........handle.|
00024b20  68 00 00 00 00 00 09 b0  00 00 00 00 00 00 09 9b  |h...............|
00024b30  07 68 6c 69 73 74 2e 68  00 00 00 00 00 00 09 b0  |.hlist.h........|
00024b40  00 00 00 00 00 00 09 9c  07 69 6e 70 75 74 2e 68  |.........input.h|
00024b50  00 00 00 00 00 00 09 b0  00 00 00 00 00 00 09 9d  |................|
00024b60  0a 69 6e 73 74 61 6c 6c  2d 73 68 00 00 00 09 b0  |.install-sh.....|
00024b70  00 00 00 00 00 00 09 9e  06 69 72 69 78 2e 68 00  |.........irix.h.|
00024b80  00 00 00 00 00 00 09 b0  00 00 00 00 00 00 09 9f  |................|
00024b90  05 6a 64 6d 2e 68 09 b0  00 00 00 00 00 00 1b e4  |.jdm.h..........|
00024ba0  06 6b 6d 65 6d 2e 68 00  00 00 00 00 00 00 09 b0  |.kmem.h.........|
00024bb0  00 00 00 00 00 00 1b e5  08 6c 69 62 78 66 73 2e  |.........libxfs.|
00024bc0  68 00 00 00 00 00 09 b0  00 00 00 00 00 00 1b e8  |h...............|
00024bd0  09 6c 69 62 78 6c 6f 67  2e 68 00 00 00 00 09 b0  |.libxlog.h......|
00024be0  00 00 00 00 00 00 1b ea  07 6c 69 6e 75 78 2e 68  |.........linux.h|
00024bf0  00 00 00 00 00 00 09 b0  00 00 00 00 00 00 1b eb  |................|
00024c00  06 6c 69 73 74 2e 68 00  00 00 00 00 00 00 09 b0  |.list.h.........|
00024c10  00 00 00 00 00 00 1b ec  08 70 61 72 65 6e 74 2e  |.........parent.|
00024c20  68 00 00 00 00 00 09 b0  00 00 00 00 00 00 1b ed  |h...............|
00024c30  06 70 61 74 68 2e 68 02  00 00 17 2e 00 00 09 b0  |.path.h.........|
00024c40  00 00 00 00 00 00 1b ee  0f 70 6c 61 74 66 6f 72  |.........platfor|
00024c50  6d 5f 64 65 66 73 2e 68  12 24 49 bc 00 00 09 b0  |m_defs.h.$I.....|
00024c60  00 00 00 00 00 00 1b ef  12 70 6c 61 74 66 6f 72  |.........platfor|
00024c70  6d 5f 64 65 66 73 2e 68  2e 69 6e f5 00 00 09 b0  |m_defs.h.in.....|
00024c80  00 00 00 00 00 00 1b f4  09 70 72 6f 6a 65 63 74  |.........project|
00024c90  2e 68 11 9c 00 00 09 b0  00 00 00 00 00 00 1b f5  |.h..............|
00024ca0  0c 72 61 64 69 78 2d 74  72 65 65 2e 68 00 09 b0  |.radix-tree.h...|
00024cb0  00 00 00 00 00 00 1b fe  06 73 77 61 62 2e 68 7e  |.........swab.h~|
00024cc0  28 7b e8 5c 00 00 09 b0  00 00 00 00 00 00 1b ff  |({.\............|
00024cd0  08 76 6f 6c 75 6d 65 2e  68 62 be 23 00 00 09 b0  |.volume.hb.#....|
00024ce0  00 00 00 00 00 00 1c 00  08 78 66 73 5f 61 67 2e  |.........xfs_ag.|
00024cf0  68 5f 10 78 00 00 09 b0  00 00 00 00 00 00 1c 02  |h_.x............|
00024d00  11 78 66 73 5f 61 6c 6c  6f 63 5f 62 74 72 65 65  |.xfs_alloc_btree|
00024d10  2e 68 11 ff 00 00 09 b0  00 00 00 00 00 00 1c 03  |.h..............|
00024d20  0b 78 66 73 5f 61 6c 6c  6f 63 2e 68 00 00 09 b0  |.xfs_alloc.h....|
00024d30  00 00 00 00 00 00 1c 06  0a 78 66 73 5f 61 72 63  |.........xfs_arc|
00024d40  68 2e 68 66 00 00 09 b0  00 00 00 00 00 00 1c 07  |h.hf............|
00024d50  0f 78 66 73 5f 61 74 74  72 5f 6c 65 61 66 2e 68  |.xfs_attr_leaf.h|
00024d60  41 fa 76 2f 00 00 09 b0  00 00 00 00 00 00 1c 08  |A.v/............|
00024d70  0d 78 66 73 5f 61 74 74  72 5f 73 66 2e 68 07 e8  |.xfs_attr_sf.h..|
00024d80  00 00 00 2e 00 00 00 02  00 00 17 2e 00 00 00 04  |................|
00024d90  07 52 b7 c8 00 00 00 59  07 90 d5 82 00 00 00 8a  |.R.....Y........|
00024da0  0e bc b0 1f 00 00 00 32  12 24 49 b7 00 00 00 c6  |.......2.$I.....|
00024db0  18 1c 98 12 00 00 00 7a  1d 26 82 12 00 00 00 af  |.......z.&......|
00024dc0  1e 9a 14 ee 00 00 00 52  1f e7 11 97 00 00 00 76  |.......R.......v|
00024dd0  21 bf 29 44 00 00 00 b6  23 5f e9 a7 00 00 00 99  |!.)D....#_......|
00024de0  23 6c aa d2 00 00 00 35  2c 98 a8 3e 00 00 00 5d  |#l.....5,..>...]|
00024df0  2d 3e 14 27 00 00 00 38  2e 62 be 24 00 00 00 e2  |->.'...8.b.$....|
00024e00  2e 72 d4 15 00 00 00 0c  31 63 8a 36 00 00 00 6c  |.r......1c.6...l|
00024e10  35 8d e2 0b 00 00 00 cc  38 9d 8c e1 00 00 00 e8  |5.......8.......|
00024e20  39 c7 d0 c9 00 00 00 ab  3a 98 56 e1 00 00 00 b9  |9.......:.V.....|
00024e30  3d 18 d8 66 00 00 00 18  41 fa 76 24 00 00 00 80  |=..f....A.v$....|
00024e40  45 47 b8 bd 00 00 00 60  48 9c 80 46 00 00 00 23  |EG.....`H..F...#|
00024e50  4a 9d 68 5b 00 00 00 73  4d 48 d0 1e 00 00 00 2c  |J.h[...sMH.....,|
00024e60  4e da 17 6e 00 00 00 21  4f 3d 8c f7 00 00 00 26  |N..n...!O=.....&|
00024e70  53 39 37 ec 00 00 00 9c  55 f0 d9 96 00 00 00 7d  |S97.....U......}|
00024e80  5b 68 81 e5 00 00 00 15  5c 41 f1 3b 00 00 00 4c  |[h......\A.;...L|
00024e90  5d 3c 90 fe 00 00 00 4f  5d 54 e8 0f 00 00 00 66  |]<.....O]T.....f|
00024ea0  5f 06 c2 fc 00 00 00 87  5f 86 5a 6c 00 00 00 96  |_......._.Zl....|
00024eb0  60 c2 2c 36 00 00 00 da  6e 63 1a cd 00 00 00 f1  |`.,6....nc......|
00024ec0  6f c6 9a cd 00 00 00 ee  7c 38 94 f7 00 00 00 63  |o.......|8.....c|
00024ed0  7d f2 10 ff 00 00 00 1e  7e 06 a0 06 00 00 00 1b  |}.......~.......|
00024ee0  7e 3b e7 ba 00 00 00 de  7f 03 1a 94 00 00 00 f8  |~;..............|
00024ef0  82 ae 7a b4 00 00 00 0f  84 9c 9f 1a 00 00 00 d6  |..z.............|
00024f00  88 5c 28 1a 00 00 00 d0  8b 68 ab 3e 00 00 00 92  |.\(......h.>....|
00024f10  8c 05 70 7f 00 00 00 40  8c dc d7 6f 00 00 00 c0  |..p....@...o....|
00024f20  8d 27 8e f5 00 00 00 e5  8e 3b 57 6f 00 00 00 fb  |.'.......;Wo....|
00024f30  8f 26 ee 2d 00 00 00 c9  90 f0 0d 57 00 00 00 f4  |.&.-.......W....|
00024f40  99 67 10 d9 00 00 00 a7  9e 7c b4 0e 00 00 00 2f  |.g.......|...../|
00024f50  9e 7d 14 0e 00 00 00 49  a1 2a 5c ae 00 00 00 43  |.}.....I.*\....C|
00024f60  ac 9b 57 6e 00 00 00 3b  b5 34 19 96 00 00 00 d3  |..Wn...;.4......|
00024f70  ba db 68 42 00 00 00 84  bd 7d a0 87 00 00 00 c2  |..hB.....}......|
00024f80  be 47 4e 3d 00 00 00 70  c8 19 30 3a 00 00 00 55  |.GN=...p..0:...U|
00024f90  ce e1 5d 33 00 00 00 29  db c6 d0 99 00 00 00 a0  |..]3...)........|
00024fa0  dc bb 54 36 00 00 00 3d  dd fb 04 16 00 00 00 06  |..T6...=........|
00024fb0  ee bf a4 26 00 00 00 46  f3 b2 9f ff 00 00 00 b2  |...&...F........|
00024fc0  f5 a5 3c 27 00 00 00 12  f8 ab e8 72 00 00 00 a4  |..<'.......r....|
00024fd0  fc 2d 4c f5 00 00 00 bd  fc c8 4c f5 00 00 00 69  |.-L.......L....i|
00024fe0  fe 89 0c f5 00 00 00 eb  fe d9 70 ce 00 00 00 09  |..........p.....|
00024ff0  ff 18 5f d5 00 00 00 8e  00 00 00 4f 00 00 00 00  |.._........O....|
00025000
[root@localhost loop]# 

“directory block”块结构比较复杂,相关的结构体就有好几个:

/*
 * Generic single-block structure, for xfs_db.
 */
typedef struct xfs_dir2_block {
	xfs_dir2_data_hdr_t	hdr;		/* magic XFS_DIR2_BLOCK_MAGIC */
	xfs_dir2_data_union_t	u[1];
	xfs_dir2_leaf_entry_t	leaf[1];
	xfs_dir2_block_tail_t	tail;
} xfs_dir2_block_t;

/*
 * Header for the data blocks.
 * Always at the beginning of a directory-sized block.
 * The code knows that XFS_DIR2_DATA_FD_COUNT is 3.
 */
typedef struct xfs_dir2_data_hdr {
	__be32			magic;		/* XFS_DIR2_DATA_MAGIC */
						/* or XFS_DIR2_BLOCK_MAGIC */
	xfs_dir2_data_free_t	bestfree[XFS_DIR2_DATA_FD_COUNT];
} xfs_dir2_data_hdr_t;

#define	XFS_DIR2_DATA_FD_COUNT	3

/*
 * Describe a free area in the data block.
 * The freespace will be formatted as a xfs_dir2_data_unused_t.
 */
typedef struct xfs_dir2_data_free {
	__be16			offset;		/* start of freespace */
	__be16			length;		/* length of freespace */
} xfs_dir2_data_free_t;

typedef union {
	xfs_dir2_data_entry_t	entry;
	xfs_dir2_data_unused_t	unused;
} xfs_dir2_data_union_t;

/*
 * Active entry in a data block.  Aligned to 8 bytes.
 * Tag appears as the last 2 bytes.
 */
typedef struct xfs_dir2_data_entry {
	__be64			inumber;	/* inode number */
	__u8			namelen;	/* name length */
	__u8			name[1];	/* name bytes, no null */
						/* variable offset */
	__be16			tag;		/* starting offset of us */
} xfs_dir2_data_entry_t;

/*
 * Unused entry in a data block.  Aligned to 8 bytes.
 * Tag appears as the last 2 bytes.
 */
typedef struct xfs_dir2_data_unused {
	__be16			freetag;	/* XFS_DIR2_DATA_FREE_TAG */
	__be16			length;		/* total free length */
						/* variable offset */
	__be16			tag;		/* starting offset of us */
} xfs_dir2_data_unused_t;

/*
 * Leaf block entry.
 */
typedef struct xfs_dir2_leaf_entry {
	__be32			hashval;	/* hash value of name */
	__be32			address;	/* address of data entry */
} xfs_dir2_leaf_entry_t;

typedef struct xfs_dir2_block_tail {
	__be32		count;			/* count of leaf entries */
	__be32		stale;			/* count of stale lf entries */
} xfs_dir2_block_tail_t;

一块“directory block”的结构示意图如下所示:

1,同样先是四字节的magic魔术数,0x58443242 “XD2B”,
2,接下来是长度为3的xfs_dir2_data_free_t数组变量bestfree,这个变量的每个元素记录了本“directory block”内空闲的磁盘块,因为只有三个元素所以只能记录三个空闲块,但这三个都是空闲容量按从大到小排列为前三的。如果空闲块少于三个,那么后面的数组元素就会为空,比如一开始时,还没有形成空洞,那么此时空闲块就只有一个,那么此时数组第1和第2元素为0,如前面实例所示;当用户进行了子文件删除等操作,这样就会释放一些entry形成空闲块,此时数组第1和第2元素才会有记录。记录的信息主要是:offset为空闲块的起始地址(相对比本“directory block”偏移),length为空闲块的长度。
3,空闲块以一个xfs_dir2_data_unused_t结构体变量作为头信息,这个头信息里的freetag恒为0xffff,length为本空闲块的长度,tag记录空闲块的起始地址(相对比本“directory block”偏移)。
4,紧接在数组变量bestfree之后就是存放子文件信息的地方,子文件信息由结构体xfs_dir2_data_entry_t表示,几个字段的含义也比较明显,其中tag表示本xfs_dir2_data_entry_t变量元素的起始地址(相对比本“directory block”偏移),该地址会按8 (XFS_DIR2_DATA_ALIGN)字节对齐。
5,在“directory block”的最后存放着xfs_dir2_block_tail_t结构体对应变量的值,两个字段,占用8个字节,分别为count和stale,其中count记录leaf元素的总数,而stale记录已失效的leaf元素个数,也即是,假设一开始有128个子文件,删除3个后,那么此时count=128,stale=3。
6,紧跟着xfs_dir2_block_tail_t结构体对应变量之前就是第5点中提到的leaf数组,这个数组的增长是从“directory block”末尾反向向前增长的,每个数组元素记录一个子文件的hash值与存放的起始地址(需要乘以8(XFS_DIR2_DATA_ALIGN)),整个数组按hash进行了排序,这样便于进一步快速查找。

转载请保留地址:http://www.lenky.info/archives/2012/01/864http://lenky.info/?p=864


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

  1. DarkKnight
    2013年12月19日11:13 | #1

    请问怎么查看inode所在的block编号呢?inode所在的数据块是专门分配的特殊的区域吗?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.