commit 042505d78e02ba5179ed11b7b1ae4de14cc0a2f6 Author: Tomohiro Kusumi <kusumi.tomoh...@gmail.com> Date: Fri Jul 17 00:50:05 2015 +0900
sbin/hammer: Fix wrong free big-blocks counter - newfs_hammer needs to decrement extra 2 big-blocks from vol0_stat_freebigblocks for zone 8 and 9. - newfs_hammer has following three lines that allocate the root inode, root btree node, and pfs0 metadata for zone 8 and 9, however because alloc_blockmap() doesn't decrement vol0_stat _freebigblocks when a blockmap first meets a new layer2, the volume header shows vol0_stat_freebigblocks 2 more than it actually is. bnode = alloc_btree_element(&btree_off, &data_buffer0); idata = alloc_meta_element(&data_off, sizeof(*idata), &data_buffer1); pfsd = alloc_meta_element(&pfsd_off, sizeof(*pfsd), &data_buffer2); - This also means vol0_stat_bigblocks and vol0_stat_freebigblocks are not equal initially. This commit makes vol0_stat_bigblocks equal (vol0_stat_freebigblocks + 2), while these two were equal until this commit. This should make sense than decrementing vol0_stat_bigblocks by 2 to make these two look the same, because inodes and btree nodes allocated by regular filesystem operations do decrement vol0_stat_freebigblocks whenever a new big-block is allocated and those are counted as used big-blocks. The initial inode, btree node and pfs shouldn't be an exception. The diff of hammer info command right after newfs_hammer would look like this. ========== # diff -aNur ./before ./after --- ./before 2015-07-17 03:17:10.999193000 +0900 +++ ./after 2015-07-17 03:17:14.649193000 +0900 @@ -1,17 +1,17 @@ <snip> Big-block information Total 178376 - Used 0 (0.00%) + Used 2 (0.00%) /* inode/btree/pfs0 */ Reserved 45 (0.03%) - Free 178331 (99.97%) + Free 178329 (99.97%) /* 2 less than before */ Space information No. Inodes 1 Total size 1.4T (1496326340608 bytes) - Used 0B (0.00%) + Used 16M (0.00%) /* 2x8[MB] more than before */ Reserved 360M (0.03%) Free 1.4T (99.97%) PFS information ========== Summary of changes: sbin/hammer/ondisk.c | 1 + sbin/newfs_hammer/newfs_hammer.c | 18 +++++++++++++++++- sys/vfs/hammer/hammer_disk.h | 4 +++- 3 files changed, 21 insertions(+), 2 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/042505d78e02ba5179ed11b7b1ae4de14cc0a2f6 -- DragonFly BSD source repository