Btrfs: implement memory reclaim for leaf reference cache
authorYan <zheng.yan@oracle.com>
Wed, 30 Jul 2008 20:29:20 +0000 (16:29 -0400)
committerChris Mason <chris.mason@oracle.com>
Thu, 25 Sep 2008 15:04:05 +0000 (11:04 -0400)
commitbcc63abbf3e9bf948a1b0129b3e6120ec7d7f698
tree1c66dc210f948f79c86786368d2c75b57482875d
parent33958dc6d38fb4ca7e62273855fcb2db7e616263
Btrfs: implement memory reclaim for leaf reference cache

The memory reclaiming issue happens when snapshot exists. In that
case, some cache entries may not be used during old snapshot dropping,
so they will remain in the cache until umount.

The patch adds a field to struct btrfs_leaf_ref to record create time. Besides,
the patch makes all dead roots of a given snapshot linked together in order of
create time. After a old snapshot was completely dropped, we check the dead
root list and remove all cache entries created before the oldest dead root in
the list.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
15 files changed:
fs/btrfs/ctree.c
fs/btrfs/ctree.h
fs/btrfs/dir-item.c
fs/btrfs/disk-io.c
fs/btrfs/extent-tree.c
fs/btrfs/extent_io.c
fs/btrfs/file-item.c
fs/btrfs/file.c
fs/btrfs/inode.c
fs/btrfs/locking.c
fs/btrfs/print-tree.c
fs/btrfs/ref-cache.c
fs/btrfs/ref-cache.h
fs/btrfs/transaction.c
fs/btrfs/volumes.c