]> git.karo-electronics.de Git - karo-tx-linux.git/commit
nilfs2: free unused dat file blocks during garbage collection
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Wed, 21 Oct 2015 22:03:55 +0000 (09:03 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 21 Oct 2015 22:03:55 +0000 (09:03 +1100)
commita0e06b0560943781e12f979e629ed53802777626
tree6c1c32d3d06f3a385ef290b4212e0b1b882f8cac
parentda1f67b2090645f36cf75ce19072af1b7959b05f
nilfs2: free unused dat file blocks during garbage collection

As a nilfs2 volume ages, the amount of available disk space decreases
little by little due to bloat of DAT (disk address translation) metadata
file.  Even if we delete all files in a file system and free their block
addresses from the DAT file through a garbage collection, empty DAT blocks
are not freed.

This fixes the issue by extending the deallocator of block addresses so
that empty data blocks and empty bitmap blocks of DAT are deleted.

The following comparison shows the effect of this patch.  Each shows disk
amount information of a nilfs2 volume that we cleaned out by deleting all
files and running gc after having filled 90% of its capacity.

Before:
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      500105212  3022844 472072192   1% /test

After:
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      500105212    16380 475078656   1% /test

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/nilfs2/alloc.c
fs/nilfs2/alloc.h