1
linux/fs/btrfs
Yan Zheng 11833d66be Btrfs: improve async block group caching
This patch gets rid of two limitations of async block group caching.
The old code delays handling pinned extents when block group is in
caching. To allocate logged file extents, the old code need wait
until block group is fully cached. To get rid of the limitations,
This patch introduces a data structure to track the progress of
caching. Base on the caching progress, we know which extents should
be added to the free space cache when handling the pinned extents.
The logged file extents are also handled in a similar way.

This patch also changes how pinned extents are tracked. The old
code uses one tree to track pinned extents, and copy the pinned
extents tree at transaction commit time. This patch makes it use
two trees to track pinned extents. One tree for extents that are
pinned in the running transaction, one tree for extents that can
be unpinned. At transaction commit time, we swap the two trees.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2009-09-17 15:47:36 -04:00
..
acl.c helpers for acl caching + switch to those 2009-06-24 08:17:07 -04:00
async-thread.c Btrfs: Fix async thread shutdown race 2009-09-15 20:20:17 -04:00
async-thread.h Btrfs: keep irqs on more often in the worker threads 2009-09-11 13:31:04 -04:00
btrfs_inode.h switch btrfs to inode->i_acl 2009-06-24 08:17:05 -04:00
compat.h
compression.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable 2009-09-11 19:07:25 -04:00
compression.h
ctree.c Btrfs: Avoid delayed reference update looping 2009-07-24 12:42:46 -04:00
ctree.h Btrfs: improve async block group caching 2009-09-17 15:47:36 -04:00
delayed-ref.c Btrfs: Mixed back reference (FORWARD ROLLING FORMAT CHANGE) 2009-06-10 11:29:46 -04:00
delayed-ref.h Btrfs: Mixed back reference (FORWARD ROLLING FORMAT CHANGE) 2009-06-10 11:29:46 -04:00
dir-item.c Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
disk-io.c Btrfs: improve async block group caching 2009-09-17 15:47:36 -04:00
disk-io.h Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
export.c Btrfs: Mixed back reference (FORWARD ROLLING FORMAT CHANGE) 2009-06-10 11:29:46 -04:00
export.h
extent_io.c Btrfs: Use PagePrivate2 to track pages in the data=ordered code. 2009-09-11 13:31:07 -04:00
extent_io.h Btrfs: Use PagePrivate2 to track pages in the data=ordered code. 2009-09-11 13:31:07 -04:00
extent_map.c Btrfs: Fix extent replacment race 2009-09-11 13:31:07 -04:00
extent_map.h Btrfs: Fix extent replacment race 2009-09-11 13:31:07 -04:00
extent-tree.c Btrfs: improve async block group caching 2009-09-17 15:47:36 -04:00
file-item.c Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
file.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable 2009-09-11 19:07:25 -04:00
free-space-cache.c Btrfs: fix btrfs_remove_from_free_space corner case 2009-07-31 11:03:58 -04:00
free-space-cache.h Btrfs: use hybrid extents+bitmap rb tree for free space 2009-07-24 09:23:30 -04:00
hash.h Btrfs: remove crc32c.h and use libcrc32c directly. 2009-06-10 11:29:53 -04:00
inode-item.c Btrfs: leave btree locks spinning more often 2009-03-24 16:14:28 -04:00
inode-map.c Btrfs: Fix a trivial warning using max() of u64 vs ULL. 2009-04-27 08:37:49 -04:00
inode.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable 2009-09-11 19:07:25 -04:00
ioctl.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable 2009-09-11 19:07:25 -04:00
ioctl.h
Kconfig Btrfs: make btrfs acls selectable 2009-02-04 09:28:28 -05:00
locking.c Btrfs: fix typos in comments 2009-04-02 16:46:06 -04:00
locking.h Btrfs: fix spinlock assertions on UP systems 2009-03-09 11:45:38 -04:00
Makefile Btrfs: Mixed back reference (FORWARD ROLLING FORMAT CHANGE) 2009-06-10 11:29:46 -04:00
ordered-data.c Btrfs: Use PagePrivate2 to track pages in the data=ordered code. 2009-09-11 13:31:07 -04:00
ordered-data.h Btrfs: Use PagePrivate2 to track pages in the data=ordered code. 2009-09-11 13:31:07 -04:00
orphan.c
print-tree.c Btrfs: remove of redundant btrfs_header_level 2009-07-22 16:52:13 -04:00
print-tree.h
ref-cache.c Btrfs: Make btrfs_drop_snapshot work in larger and more efficient chunks 2009-02-04 09:27:02 -05:00
ref-cache.h Btrfs: Make btrfs_drop_snapshot work in larger and more efficient chunks 2009-02-04 09:27:02 -05:00
relocation.c Btrfs: use a cached state for extent state operations during delalloc 2009-09-11 13:31:07 -04:00
root-tree.c Btrfs: Mixed back reference (FORWARD ROLLING FORMAT CHANGE) 2009-06-10 11:29:46 -04:00
struct-funcs.c
super.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
sysfs.c
transaction.c Btrfs: improve async block group caching 2009-09-17 15:47:36 -04:00
transaction.h Btrfs: be more polite in the async caching threads 2009-07-30 10:14:46 -04:00
tree-defrag.c Btrfs: do extent allocation and reference count updates in the background 2009-03-24 16:14:25 -04:00
tree-log.c Btrfs: improve async block group caching 2009-09-17 15:47:36 -04:00
tree-log.h Btrfs: tree logging unlink/rename fixes 2009-03-24 16:14:52 -04:00
version.h
version.sh
volumes.c Btrfs: switch extent_map to a rw lock 2009-09-11 13:31:05 -04:00
volumes.h Btrfs: avoid races between super writeout and device list updates 2009-06-10 15:17:02 -04:00
xattr.c Btrfs: selinux support 2009-02-04 09:29:13 -05:00
xattr.h Btrfs: selinux support 2009-02-04 09:29:13 -05:00
zlib.c Btrfs: correct error-handling zlib error handling 2009-08-07 13:51:33 -04:00