Chris Mason
f578d4bd7e
Btrfs: Optimize csum insertion to create larger items when possible
...
This reduces the number of calls to btrfs_extend_item and greatly lowers
the cpu usage while writing large files.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
5ee78ac70f
Btrfs: Fix split_leaf to avoid incorrect double splits
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
ff190c0c00
Btrfs: Avoid recursive KM_USER1 mappings in copy_extent_buffer
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
3685f79165
Btrfs: CPU usage optimizations in push and the extent_map code
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
59d169e2b3
Btrfs: Fix read/write_extent_buffer to use KM_USER1 instead of KM_USER0
...
This avoids recursive use of KM_USER0 during btrfs_file_write
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Jens Axboe
b4a2a0edfd
Btrfs: sysfs compile fixup
...
Just use kobject_set_name(), that works in all kernels (I think...).
Kernels newer than 2.6.23 currently fail with:
/home/axboe/git/btrfs/btrfs-unstable/sysfs.c:188: error: unknown field
'name' specified in initializer
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Jens Axboe
bbf0d0062d
Btrfs: KM_IRQ0 usage in end_io handling
...
endio handling is typically called with interrupts disabled, but can
also be called with it enabled. So save interrupts before using KM_IRQ0
to be completely safe.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Jens Axboe
0a2118dfd4
Btrfs: Fix bi_end_io() functions on > 2.6.23 kernels
...
It now returns void and it is never called for partial completions, so
the bio->bi_size check must go.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Jens Axboe
ae2f5411c4
btrfs: 32-bit type problems
...
An assorted set of casts to get rid of the warnings on 32-bit archs.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Yan Zheng
44b36eb20b
Btrfs: Properly setup root key while reading the root
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
6d7231f7d3
Btrfs: Fix typo: owner is a 64 bit field
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
7936ca3883
Btrfs: Default to 8k max packed tails
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
a6b6e75e09
Btrfs: Defrag only leaves, and only when the parent node has a single objectid
...
This allows us to defrag huge directories, but skip the expensive defrag
case in more common usage, where it does not help as much.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
ff79f8190b
Btrfs: Add back file data checksumming
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
cf786e79e3
Btrfs: Defrag: only walk into nodes with the defrag bit set
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
304fced668
Btrfs: balance_dirty_pages_ratelimited is causing problems, use nr == 1 always
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
0f1ebbd159
Btrfs: Large block related defrag optimizations
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
19c00ddcc3
Btrfs: Add back metadata checksumming
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
0f82731fc5
Breakout BTRFS_SETGET_FUNCS into a separate C file, the inlines were too big.
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
810191ff30
Btrfs: extent_map optimizations to cut down on CPU usage
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
3326d1b07c
Btrfs: Allow tails larger than one page
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
4dc119046d
Btrfs: Add an extent buffer LRU to reduce radix tree hits
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
e19caa5f0e
Btrfs: Fix allocation routines to avoid intermixing data and metadata allocations
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
6b80053d02
Btrfs: Add back the online defragging code
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
09e71a3263
Btrfs: Use an array of pages in the extent buffers to reduce the cost of find_get_page
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
14048ed0c4
Btrfs: Cache extent buffer mappings
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
db94535db7
Btrfs: Allow tree blocks larger than the page size
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
1a5bc167f6
Btrfs: Change the remaining radix trees used by extent-tree.c to extent_map trees
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
96b5179d0d
Btrfs: Stop using radix trees for the block group cache
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
f510cfecfc
Btrfs: Fix extent_buffer and extent_state leaks
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
ae5252bd51
Btrfs: Go back to kmaps instead of page_address in extent_buffers
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
6d36dcd48f
Btrfs: Avoid memcpy where possible in extent_buffers
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
479965d66e
Btrfs: Optimizations for the extent_buffer code
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
5f39d397df
Btrfs: Create extent_buffer interface for large blocksizes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
50b78c24d5
btrfs_get_extent should treat inline extents as though they hold a whole block
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Christoph Hellwig
b3cfa35a49
Btrfs: factor page private preparations into a helper
...
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Yan
8e1cd76664
Btrfs: Fix double free and off by one in inode.c
...
The first change removes potential double free, the second fix a off
by one error.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Yan
bab9fb035f
Btrfs: truncate: don't update inode->i_blocks when extent is a hole
...
I think check whether extent is a hole before update 'inode->i_blocks'
is unconditional required. (original codes check it only when
del_item isn't equal to 0)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Yan
23223584e4
create btrfs_path slab with the correct size
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Yan
a61721d5b7
fix found_type decrement in btrfs_truncate_in_trans
...
found_type has already been decreased by codes above the change, I
think decrease it by one again doesn't make sense.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
cf67582bb2
Btrfs: Fix duplicate ENOSPC checks in find_free_extent
...
find_free_extent would fail to wrap around to the start of the drive because
it was doing the enospc case checking twice in some cases, causing it
to return -ENOSPC early.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:56 -04:00
Chris Mason
d3c2fdcf7b
Btrfs: Use balance_dirty_pages_nr on btree blocks
...
btrfs_btree_balance_dirty is changed to pass the number of pages dirtied
for more accurate dirty throttling. This lets the VM make better decisions
about when to force some writeback.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:00:48 -04:00
Yan
7d7d6068be
Btrfs: Fix cache_block_group to catch holes at the start of the group
...
Cache block group was overly complex and missed free blocks at the very start
of the group. This patch simplifies things significantly.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-14 16:15:28 -04:00
Yan
6af858b24c
Btrfs: Fix off by one error in dirty_and_release_pages
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-14 10:23:29 -04:00
Christoph Hellwig
d03581f434
split up btrfs_ioctl
...
Add a helper per ioctl function to make the code more readable.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-14 10:22:57 -04:00
Christoph Hellwig
34287aa360
Btrfs: use unlocked_ioctl
...
No reason to grab the BKL before calling into the btrfs ioctl code.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-14 10:22:47 -04:00
Jan Engelhardt
432eba0882
Btrfs: Simplify makefile
...
Single-colons will do here.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-14 10:22:19 -04:00
Chris Mason
84a5d5eefd
Btrfs: add modules_install target
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-14 09:43:53 -04:00
Chris Mason
93a6925ec1
Btrfs: Fix extra link count dec in rename
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-14 09:42:31 -04:00
Chris Mason
3de3f774f9
Btrfs: Added tag v0.8 for changeset f5ce4cc64def
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-11 19:45:31 -04:00