Chris Mason
ecbe2402cb
Btrfs: Keep fs_mutex during reads done by snapshot deletion
...
There was an optimization to drop the fs_mutex when doing snapshot deletion
reads, but this can lead to false positives on checksumming errors. Keep
the lock for now.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:01 -04:00
Chris Mason
593060d756
Btrfs: Implement raid0 when multiple devices are present
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:01 -04:00
Chris Mason
239b14b32d
Btrfs: Bring back mount -o ssd optimizations
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:01 -04:00
Chris Mason
a9218f6b00
Add /dev/btrfs-control for device scanning ioctls
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:01 -04:00
Chris Mason
7d1660d411
Btrfs: Bring back find_free_extent CPU usage optimizations
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:01 -04:00
Chris Mason
6324fbf334
Btrfs: Dynamic chunk and block group allocation
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:01 -04:00
Chris Mason
0b86a832a1
Btrfs: Add support for multiple devices per filesystem
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
7f93bf8d27
Match the extent tree code to btrfs-progs for multi-device merging
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
952fccac50
Btrfs: Remove extent back refs in batches, and avoid duplicate searches
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
d7fc640e6f
Btrfs: Allocator improvements
...
Reduce CPU time searching for free blocks by optimizing find_first_extent_bit
Fix find_free_extent to make better use of the last_alloc hint. Before it
was often finding blocks just before the hint.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
9afbb0b752
Btrfs: Disable tree defrag in SSD mode
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
5d196fc15d
Btrfs: Use 2MB as the empty_size for clustered allocations
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
068fe39fa1
Btrfs: Add checks for last byte in disk to allocator grouping
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
f594706643
Btrfs: Add debugging for block group update failure
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
60cde612c8
Btrfs: Use last_alloc optimizations for metadata, even without -o ssd
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
21a4989d26
Btrfs: Hash in the offset and owner for file extent backref keys
...
This makes searches for backrefs and backref insertion much more efficient
when there are many backrefs for a single extent
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
47e4bb988c
Btrfs: Insert extent record and the first backref in a single balance
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
4529ba495c
Btrfs: Add data block hints to SSD mode too
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
291d673e6a
Btrfs: Do delalloc accounting via hooks in the extent_state code
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -04:00
Chris Mason
bea495e5b4
Btrfs: Tune readahead during defrag to avoid reading too much at once
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
d1310b2e0c
Btrfs: Split the extent_map code into two parts
...
There is now extent_map for mapping offsets in the file to disk and
extent_io for state tracking, IO submission and extent_bufers.
The new extent_map code shifts from [start,end] pairs to [start,len], and
pushes the locking out into the caller. This allows a few performance
optimizations and is easier to use.
A number of extent_map usage bugs were fixed, mostly with failing
to remove extent_map entries when changing the file.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
e18e4809b1
Btrfs: Add mount -o ssd, which includes optimizations for seek free storage
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
55c69072d6
Btrfs: Fix extent_buffer usage when nodesize != leafsize
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
c31f8830f0
Btrfs: online shrinking fixes
...
While shrinking the FS, the allocation functions need to make sure
they don't try to allocate bytes past the end of the FS.
nodatacow needed an extra check to force cows when the existing extents are
past the end of the FS.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
b0331a4c4c
Btrfs: Disable btree reada during extent backref lookups.
...
This reada is generally not effective.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
dc17ff8f11
Btrfs: Add data=ordered support
...
This forces file data extents down the disk along with the metadata that
references them. The current implementation is fairly simple, and just
writes out all of the dirty pages in an inode before the commit.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
725c8463ea
Btrfs: resizer: don't hold the fs_mutex for long periods of time
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Chris Mason
1372f8e609
Properly call btrfs_search_slot while shrinking
...
The shrinking code used btrfs_next_leaf to find the next item, but
this does not cow the blocks it touches. This fix calls search_slot after
finding the next item to do appropriate cow and balancing.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:59 -04:00
Yan
73e48b277a
Btrfs: Properly handle overlapping extent in shrink_extent_tree
...
The patch fixes the overlapping extent issue in shrink_extent_tree.
It checks whether there is an overlapping extent by using
find_previous_extent. If there is an overlapping extent, it setups
key.objectid and cur_byte properly.
---
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Yan
d548ee5182
Btrfs: Add a helper that finds previous extent item
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
bd09835d9a
count_snapshots: Properly update the leaf pointer after btrfs_next_leaf
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
98ed51747b
Btrfs: Force inlining off in a few places to save stack usage
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
f9ef6604ac
Btrfs: 32 bit compile fixes for the resizer and enospc checks
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
4313b3994d
Btrfs: Reduce stack usage in the resizer, fix 32 bit compiles
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
56b453c92f
Btrfs: Explicitly send a root objectid to count_snapshots_in_path
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
8f662a76c6
Btrfs: Add readahead to the online shrinker, and a mount -o alloc_start= for testing
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
e52ec0eb62
Btrfs: Fix NULL block groups on reading the inode
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
edbd8d4efe
Btrfs: Support for online FS resize (grow and shrink)
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
be20aa9dba
Btrfs: Add mount option to turn off data cow
...
A number of workloads do not require copy on write data or checksumming.
mount -o nodatasum to disable checksums and -o nodatacow to disable
both copy on write and checksumming.
In nodatacow mode, copy on write is still performed when a given extent
is under snapshot.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
f6dbff55d7
Btrfs: Reorder extent back refs to differentiate btree blocks from file data
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
6caab489c5
Fix btrfs_inc_ref to add backref hints
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
70b043f0c7
Btrfs: Extra NULL block group checks in find_free_extent
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
d8d5f3e16d
Btrfs: Add lowest key information to back refs for extent tree blocks as well.
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
7bb86316c3
Btrfs: Add back pointers from extents to the btree or file referencing them
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
74493f7a59
Btrfs: Implement generation numbers in block pointers
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
1a2b2ac78a
Btrfs: Fix extent allocation for btree blocks as the disk fills
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
87ee04eb0f
Btrfs: Add simple stripe size parameter
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
00f5c795fc
btrfs_drop_extents: make sure the item is getting smaller before truncate
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
015a739c7c
Btrfs: Handle writeback under high memory pressure better
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
0e4de58432
Btrfs: Add check for null block group to find_search_start
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00