commit fff0110a0b936812fc3f14008be83aa396551ce3 Author: Tomohiro Kusumi <kusumi.tomoh...@gmail.com> Date: Sun Jul 26 01:01:33 2015 +0900
sbin/hammer: Fix memory allocation for zone statistics - 2550036 allocates unnecessary amount of memory when the filesystem consists of >1 volumes and accounting actually reaches to the second volume. This commit fixes it by splitting bitmap into bitmaps[2^8] where 2^8 is the maximum number of volumes. Other than that it's basically the same. layer1/layer2 direct map: <------> Max 2^8 volumes zzzzvvvvvvvvoooo oooooooooooooooo oooooooooooooooo oooooooooooooooo ----111111111111 1111112222222222 222222222ooooooo oooooooooooooooo <----... Most environment doesn't use address space this far as the storage usually isn't as huge as 2^52, so hammer_extend_layer2_bits() allocating bitmaps for this region mostly ends up waste of memory. Having an array bitmaps[2^8] prevents this as the volume-bits-masked-laye1-index doesn't jump up by 2^10 when v part gets ++. Summary of changes: sbin/hammer/misc.c | 100 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 28 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/fff0110a0b936812fc3f14008be83aa396551ce3 -- DragonFly BSD source repository