diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog index 512ef3f7..3ce0f4dc 100644 --- a/lib/ext2fs/ChangeLog +++ b/lib/ext2fs/ChangeLog @@ -1,3 +1,11 @@ +2006-05-12 Theodore Tso + + * alloc_tables.c (ext2fs_allocate_group_table): When allocating + space for the RAID filesystems with the stride parameter, + place each portion of the group's inode table right up + after the superblock (if present) in order to minimize + fragmentation of the freespace. + 2006-05-08 Theodore Tso * rw_bitmaps.c (write_bitmaps, read_bitmaps): Added support for diff --git a/lib/ext2fs/alloc_tables.c b/lib/ext2fs/alloc_tables.c index 0326321b..dec49bda 100644 --- a/lib/ext2fs/alloc_tables.c +++ b/lib/ext2fs/alloc_tables.c @@ -48,7 +48,11 @@ errcode_t ext2fs_allocate_group_table(ext2_filsys fs, dgrp_t group, * Allocate the block and inode bitmaps, if necessary */ if (fs->stride) { - start_blk = group_blk + fs->inode_blocks_per_group; + retval = ext2fs_get_free_blocks(fs, group_blk, last_blk, + 1, bmap, &start_blk); + if (retval) + return retval; + start_blk += fs->inode_blocks_per_group; start_blk += ((fs->stride * group) % (last_blk - start_blk)); if (start_blk > last_blk) diff --git a/tests/ChangeLog b/tests/ChangeLog index c140f704..5e6854dc 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2006-05-13 Theodore Tso + + * m_raid_opt: Update expect files to match with new mke2fs layout + used when the stride raid option is specified. + 2006-03-23 Theodore Ts'o * test_config: Set up MKE2FS_CONFIG to point at the mke2fs.conf diff --git a/tests/m_raid_opt/expect.1 b/tests/m_raid_opt/expect.1 index 6df7f07d..d6b83378 100644 --- a/tests/m_raid_opt/expect.1 +++ b/tests/m_raid_opt/expect.1 @@ -56,17 +56,17 @@ Default directory hash: tea Group 0: (Blocks 1-1024) Primary superblock at 1, Group descriptor at 2 - Block bitmap at 33 (+32), Inode bitmap at 34 (+33) - Inode table at 35-66 (+34) + Block bitmap at 35 (+34), Inode bitmap at 36 (+35) + Inode table at 3-34 (+2) 975 free blocks, 245 free inodes, 2 directories - Free blocks: 16-32, 67-1024 + Free blocks: 50-1024 Free inodes: 12-256 Group 1: (Blocks 1025-2048) Backup superblock at 1025, Group descriptor at 1026 - Block bitmap at 1070 (+45), Inode bitmap at 1071 (+46) + Block bitmap at 1072 (+47), Inode bitmap at 1073 (+48) Inode table at 1027-1058 (+2) 988 free blocks, 256 free inodes, 0 directories - Free blocks: 1059-1069, 1072-2048 + Free blocks: 1059-1071, 1074-2048 Free inodes: 257-512 Group 2: (Blocks 2049-3072) Block bitmap at 2107 (+58), Inode bitmap at 2108 (+59) @@ -76,10 +76,10 @@ Group 2: (Blocks 2049-3072) Free inodes: 513-768 Group 3: (Blocks 3073-4096) Backup superblock at 3073 - Block bitmap at 3144 (+71), Inode bitmap at 3145 (+72) + Block bitmap at 3145 (+72), Inode bitmap at 3146 (+73) Inode table at 3074-3105 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 3106-3143, 3146-4096 + Free blocks: 3106-3144, 3147-4096 Free inodes: 769-1024 Group 4: (Blocks 4097-5120) Block bitmap at 4181 (+84), Inode bitmap at 4182 (+85) @@ -89,10 +89,10 @@ Group 4: (Blocks 4097-5120) Free inodes: 1025-1280 Group 5: (Blocks 5121-6144) Backup superblock at 5121 - Block bitmap at 5218 (+97), Inode bitmap at 5219 (+98) + Block bitmap at 5219 (+98), Inode bitmap at 5220 (+99) Inode table at 5122-5153 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 5154-5217, 5220-6144 + Free blocks: 5154-5218, 5221-6144 Free inodes: 1281-1536 Group 6: (Blocks 6145-7168) Block bitmap at 6255 (+110), Inode bitmap at 6256 (+111) @@ -102,10 +102,10 @@ Group 6: (Blocks 6145-7168) Free inodes: 1537-1792 Group 7: (Blocks 7169-8192) Backup superblock at 7169 - Block bitmap at 7292 (+123), Inode bitmap at 7293 (+124) + Block bitmap at 7293 (+124), Inode bitmap at 7294 (+125) Inode table at 7170-7201 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 7202-7291, 7294-8192 + Free blocks: 7202-7292, 7295-8192 Free inodes: 1793-2048 Group 8: (Blocks 8193-9216) Block bitmap at 8329 (+136), Inode bitmap at 8330 (+137) @@ -115,10 +115,10 @@ Group 8: (Blocks 8193-9216) Free inodes: 2049-2304 Group 9: (Blocks 9217-10240) Backup superblock at 9217 - Block bitmap at 9366 (+149), Inode bitmap at 9367 (+150) + Block bitmap at 9367 (+150), Inode bitmap at 9368 (+151) Inode table at 9218-9249 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 9250-9365, 9368-10240 + Free blocks: 9250-9366, 9369-10240 Free inodes: 2305-2560 Group 10: (Blocks 10241-11264) Block bitmap at 10403 (+162), Inode bitmap at 10404 (+163) @@ -212,10 +212,10 @@ Group 24: (Blocks 24577-25600) Free inodes: 6145-6400 Group 25: (Blocks 25601-26624) Backup superblock at 25601 - Block bitmap at 25958 (+357), Inode bitmap at 25959 (+358) + Block bitmap at 25959 (+358), Inode bitmap at 25960 (+359) Inode table at 25602-25633 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 25634-25957, 25960-26624 + Free blocks: 25634-25958, 25961-26624 Free inodes: 6401-6656 Group 26: (Blocks 26625-27648) Block bitmap at 26995 (+370), Inode bitmap at 26996 (+371) @@ -225,10 +225,10 @@ Group 26: (Blocks 26625-27648) Free inodes: 6657-6912 Group 27: (Blocks 27649-28672) Backup superblock at 27649 - Block bitmap at 28032 (+383), Inode bitmap at 28033 (+384) + Block bitmap at 28033 (+384), Inode bitmap at 28034 (+385) Inode table at 27650-27681 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 27682-28031, 28034-28672 + Free blocks: 27682-28032, 28035-28672 Free inodes: 6913-7168 Group 28: (Blocks 28673-29696) Block bitmap at 29069 (+396), Inode bitmap at 29070 (+397) @@ -250,24 +250,24 @@ Group 30: (Blocks 30721-31744) Free inodes: 7681-7936 Group 31: (Blocks 31745-32768) Group descriptor at 31745 - Block bitmap at 32180 (+435), Inode bitmap at 32181 (+436) + Block bitmap at 32181 (+436), Inode bitmap at 32182 (+437) Inode table at 31746-31777 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 31778-32179, 32182-32768 + Free blocks: 31778-32180, 32183-32768 Free inodes: 7937-8192 Group 32: (Blocks 32769-33792) Group descriptor at 32769 - Block bitmap at 33217 (+448), Inode bitmap at 33218 (+449) + Block bitmap at 33218 (+449), Inode bitmap at 33219 (+450) Inode table at 32770-32801 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 32802-33216, 33219-33792 + Free blocks: 32802-33217, 33220-33792 Free inodes: 8193-8448 Group 33: (Blocks 33793-34816) Group descriptor at 33793 - Block bitmap at 34254 (+461), Inode bitmap at 34255 (+462) + Block bitmap at 34255 (+462), Inode bitmap at 34256 (+463) Inode table at 33794-33825 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 33826-34253, 34256-34816 + Free blocks: 33826-34254, 34257-34816 Free inodes: 8449-8704 Group 34: (Blocks 34817-35840) Block bitmap at 35291 (+474), Inode bitmap at 35292 (+475) @@ -361,10 +361,10 @@ Group 48: (Blocks 49153-50176) Free inodes: 12289-12544 Group 49: (Blocks 50177-51200) Backup superblock at 50177 - Block bitmap at 50846 (+669), Inode bitmap at 50847 (+670) + Block bitmap at 50847 (+670), Inode bitmap at 50848 (+671) Inode table at 50178-50209 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 50210-50845, 50848-51200 + Free blocks: 50210-50846, 50849-51200 Free inodes: 12545-12800 Group 50: (Blocks 51201-52224) Block bitmap at 51883 (+682), Inode bitmap at 51884 (+683) @@ -446,24 +446,24 @@ Group 62: (Blocks 63489-64512) Free inodes: 15873-16128 Group 63: (Blocks 64513-65536) Group descriptor at 64513 - Block bitmap at 65364 (+851), Inode bitmap at 65365 (+852) + Block bitmap at 65365 (+852), Inode bitmap at 65366 (+853) Inode table at 64514-64545 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 64546-65363, 65366-65536 + Free blocks: 64546-65364, 65367-65536 Free inodes: 16129-16384 Group 64: (Blocks 65537-66560) Group descriptor at 65537 - Block bitmap at 66401 (+864), Inode bitmap at 66402 (+865) + Block bitmap at 66402 (+865), Inode bitmap at 66403 (+866) Inode table at 65538-65569 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 65570-66400, 66403-66560 + Free blocks: 65570-66401, 66404-66560 Free inodes: 16385-16640 Group 65: (Blocks 66561-67584) Group descriptor at 66561 - Block bitmap at 67438 (+877), Inode bitmap at 67439 (+878) + Block bitmap at 67439 (+878), Inode bitmap at 67440 (+879) Inode table at 66562-66593 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 66594-67437, 67440-67584 + Free blocks: 66594-67438, 67441-67584 Free inodes: 16641-16896 Group 66: (Blocks 67585-68608) Block bitmap at 68475 (+890), Inode bitmap at 68476 (+891) @@ -557,10 +557,10 @@ Group 80: (Blocks 81921-82944) Free inodes: 20481-20736 Group 81: (Blocks 82945-83968) Backup superblock at 82945 - Block bitmap at 83038 (+93), Inode bitmap at 83039 (+94) + Block bitmap at 83040 (+95), Inode bitmap at 83041 (+96) Inode table at 82946-82977 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 82978-83037, 83040-83968 + Free blocks: 82978-83039, 83042-83968 Free inodes: 20737-20992 Group 82: (Blocks 83969-84992) Block bitmap at 84075 (+106), Inode bitmap at 84076 (+107) @@ -642,24 +642,24 @@ Group 94: (Blocks 96257-97280) Free inodes: 24065-24320 Group 95: (Blocks 97281-98304) Group descriptor at 97281 - Block bitmap at 97556 (+275), Inode bitmap at 97557 (+276) + Block bitmap at 97558 (+277), Inode bitmap at 97559 (+278) Inode table at 97282-97313 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 97314-97555, 97558-98304 + Free blocks: 97314-97557, 97560-98304 Free inodes: 24321-24576 Group 96: (Blocks 98305-99328) Group descriptor at 98305 - Block bitmap at 98593 (+288), Inode bitmap at 98594 (+289) + Block bitmap at 98595 (+290), Inode bitmap at 98596 (+291) Inode table at 98306-98337 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 98338-98592, 98595-99328 + Free blocks: 98338-98594, 98597-99328 Free inodes: 24577-24832 Group 97: (Blocks 99329-100352) Group descriptor at 99329 - Block bitmap at 99630 (+301), Inode bitmap at 99631 (+302) + Block bitmap at 99632 (+303), Inode bitmap at 99633 (+304) Inode table at 99330-99361 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 99362-99629, 99632-100352 + Free blocks: 99362-99631, 99634-100352 Free inodes: 24833-25088 Group 98: (Blocks 100353-101376) Block bitmap at 100667 (+314), Inode bitmap at 100668 (+315) @@ -825,10 +825,10 @@ Group 124: (Blocks 126977-128000) Free inodes: 31745-32000 Group 125: (Blocks 128001-129024) Backup superblock at 128001 - Block bitmap at 128666 (+665), Inode bitmap at 128667 (+666) + Block bitmap at 128668 (+667), Inode bitmap at 128669 (+668) Inode table at 128002-128033 (+1) 989 free blocks, 256 free inodes, 0 directories - Free blocks: 128034-128665, 128668-129024 + Free blocks: 128034-128667, 128670-129024 Free inodes: 32001-32256 Group 126: (Blocks 129025-130048) Block bitmap at 129703 (+678), Inode bitmap at 129704 (+679) @@ -838,8 +838,8 @@ Group 126: (Blocks 129025-130048) Free inodes: 32257-32512 Group 127: (Blocks 130049-131071) Group descriptor at 130049 - Block bitmap at 130742 (+693), Inode bitmap at 130743 (+694) + Block bitmap at 130744 (+695), Inode bitmap at 130745 (+696) Inode table at 130050-130081 (+1) 988 free blocks, 256 free inodes, 0 directories - Free blocks: 130082-130741, 130744-131071 + Free blocks: 130082-130743, 130746-131071 Free inodes: 32513-32768