diff options
author | Josef Bacik <josef@redhat.com> | 2010-02-03 14:33:23 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2010-03-15 11:00:13 -0400 |
commit | 2ac55d41b5d6bf49e76bc85db5431240617e2f8f (patch) | |
tree | ee8e2a716ef0b50388ef5e4a86387ec0499bca89 /fs/btrfs/relocation.c | |
parent | 5a1a3df1f6c86926cfe8657e6f9b4b4c2f467d60 (diff) |
Btrfs: cache the extent state everywhere we possibly can V2
This patch just goes through and fixes everybody that does
lock_extent()
blah
unlock_extent()
to use
lock_extent_bits()
blah
unlock_extent_cached()
and pass around a extent_state so we only have to do the searches once per
function. This gives me about a 3 mb/s boots on my random write test. I have
not converted some things, like the relocation and ioctl's, since they aren't
heavily used and the relocation stuff is in the middle of being re-written. I
also changed the clear_extent_bit() to only unset the cached state if we are
clearing EXTENT_LOCKED and related stuff, so we can do things like this
lock_extent_bits()
clear delalloc bits
unlock_extent_cached()
without losing our cached state. I tested this thoroughly and turned on
LEAK_DEBUG to make sure we weren't leaking extent states, everything worked out
fine.
Signed-off-by: Josef Bacik <josef@redhat.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/relocation.c')
-rw-r--r-- | fs/btrfs/relocation.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index d52759daa53f..0b23942cbc0d 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c | |||
@@ -2659,7 +2659,7 @@ static int relocate_file_extent_cluster(struct inode *inode, | |||
2659 | EXTENT_BOUNDARY, GFP_NOFS); | 2659 | EXTENT_BOUNDARY, GFP_NOFS); |
2660 | nr++; | 2660 | nr++; |
2661 | } | 2661 | } |
2662 | btrfs_set_extent_delalloc(inode, page_start, page_end); | 2662 | btrfs_set_extent_delalloc(inode, page_start, page_end, NULL); |
2663 | 2663 | ||
2664 | set_page_dirty(page); | 2664 | set_page_dirty(page); |
2665 | dirty_page++; | 2665 | dirty_page++; |