sys/vfs/hammer: Fix wrong big-block accounting
authorTomohiro Kusumi <kusumi.tomohiro@gmail.com>
Wed, 5 Aug 2015 17:46:58 +0000 (02:46 +0900)
committerTomohiro Kusumi <kusumi.tomohiro@gmail.com>
Sat, 8 Aug 2015 17:32:24 +0000 (02:32 +0900)
commit991d87e426f93bf68acf8541a51f9e6fb13517fe
treeee32fc1515c688e05bb1db1655c0f090992514d0
parent3d0e4c864ef2d1311ae76f046e5586c2d770bd35
sys/vfs/hammer: Fix wrong big-block accounting

hammer volume-add|del should not count zone4 big-blocks as
a part of vol0_stat_bigblocks. newfs_hammer excludes zone4
big-blocks from vol0_stat_bigblocks on bootstrapping, then
volume-add|del should exclude either.

As the following example shows, it currently makes difference
on Used big-blocks/bytes between
1. newfs_hammer on multiple volumes
and
2. newfs_hammer on a single volume and then add volumes
which isn't something expected to happen.

Example 1.
  # newfs_hammer -L TEST /dev/da1 /dev/da2 /dev/da3 > /dev/null
  # mount_hammer /dev/da1:/dev/da2:/dev/da3 /HAMMER
  # hammer info /HAMMER | grep Used
          Used                2 (0.00%) /* btree + meta */
          Used              16M (0.00%)
  # umount /HAMMER
Example 2.
  # newfs_hammer -L TEST /dev/da1 > /dev/null
  # mount_hammer /dev/da1 /HAMMER
  # hammer volume-add /dev/da2 /HAMMER
  # hammer volume-add /dev/da3 /HAMMER
  # hammer volume-blkdevs /HAMMER
  /dev/da1:/dev/da2:/dev/da3
  # hammer info /HAMMER | grep Used
          Used                4 (0.01%) /* btree + meta + 2freemaps */
          Used              32M (0.01%)
  # umount /HAMMER

With this commit it results the same as the Example 1.
  # newfs_hammer -L TEST /dev/da1 > /dev/null
  # mount_hammer /dev/da1 /HAMMER
  # hammer volume-add /dev/da2 /HAMMER
  # hammer volume-add /dev/da3 /HAMMER
  # hammer volume-blkdevs /HAMMER
  /dev/da1:/dev/da2:/dev/da3
  # hammer info /HAMMER | grep Used
          Used                2 (0.00%)
          Used              16M (0.00%)
  # umount /HAMMER
sys/vfs/hammer/hammer_volume.c