- 24 Apr, 2009 2 commits
-
-
Christoph Hellwig authored
Just use kmem_cache_create directly. Signed-off-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Christoph Hellwig authored
Currently the extent_map code is only for btrfs so don't export it's symbols. Signed-off-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 02 Apr, 2009 1 commit
-
-
Dan Carpenter authored
merge is always NULL at this point. Signed-off-by:
Dan Carpenter <error27@gmail.com> Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 21 Jan, 2009 1 commit
-
-
Huang Weiyi authored
Removed unused #include <version.h>'s in btrfs Signed-off-by:
Huang Weiyi <weiyi.huang@gmail.com> Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 05 Jan, 2009 1 commit
-
-
Chris Mason authored
There were many, most are fixed now. struct-funcs.c generates some warnings but these are bogus. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 29 Oct, 2008 1 commit
-
-
Chris Mason authored
This is a large change for adding compression on reading and writing, both for inline and regular extents. It does some fairly large surgery to the writeback paths. Compression is off by default and enabled by mount -o compress. Even when the -o compress mount option is not used, it is possible to read compressed extents off the disk. If compression for a given set of pages fails to make them smaller, the file is flagged to avoid future compression attempts later. * While finding delalloc extents, the pages are locked before being sent down to the delalloc handler. This allows the delalloc handler to do complex things such as cleaning the pages, marking them writeback and starting IO on their behalf. * Inline extents are inserted at delalloc time now. This allows us to compress the data before inserting the inline extent, and it allows us to insert an inline extent that spans multiple pages. * All of the in-memory extent representations (extent_map.c, ordered-data.c etc) are changed to record both an in-memory size and an on disk size, as well as a flag for compression. From a disk format point of view, the extent pointers in the file are changed to record the on disk size of a given extent and some encoding flags. Space in the disk format is allocated for compression encoding, as well as encryption and a generic 'other' field. Neither the encryption or the 'other' field are currently used. In order to limit the amount of data read for a single random read in the file, the size of a compressed extent is limited to 128k. This is a software only limit, the disk format supports u64 sized compressed extents. In order to limit the ram consumed while processing extents, the uncompressed size of a compressed extent is limited to 256k. This is a software only limit and will be subject to tuning later. Checksumming is still done on compressed extents, and it is done on the uncompressed version of the data. This way additional encodings can be layered on without having to figure out which encoding to checksum. Compression happens at delalloc time, which is basically singled threaded because it is usually done by a single pdflush thread. This makes it tricky to spread the compression load across all the cpus on the box. We'll have to look at parallel pdflush walks of dirty inodes at a later time. Decompression is hooked into readpages and it does spread across CPUs nicely. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 29 Sep, 2008 1 commit
-
-
Chris Mason authored
This improves the comments at the top of many functions. It didn't dive into the guts of functions because I was trying to avoid merging problems with the new allocator and back reference work. extent-tree.c and volumes.c were both skipped, and there is definitely more work todo in cleaning and commenting the code. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 25 Sep, 2008 33 commits
-
-
Chris Mason authored
add_extent_mapping was allowing the insertion of overlapping extents. This never used to happen because it only inserted the extents from disk and those were never overlapping. But, with the data=ordered code, the disk and memory representations of the file are not the same. add_extent_mapping needs to ensure a new extent does not overlap before it inserts. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
David Woodhouse authored
On UP systems spin_trylock always succeeds Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Stress testing was showing data checksum errors, most of which were caused by a lookup bug in the extent_map tree. The tree was caching the last pointer returned, and searches would check the last pointer first. But, search callers also expect the search to return the very first matching extent in the range, which wasn't always true with the last pointer usage. For now, the code to cache the last return value is just removed. It is easy to fix, but I think lookups are rare enough that it isn't required anymore. This commit also replaces do_sync_mapping_range with a local copy of the related functions. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
It was possible for stale mappings from disk to be used instead of the new pending ordered extent. This adds a flag to the extent map struct to keep it pinned until the pending ordered extent is actually on disk. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
The old data=ordered code would force commit to wait until all the data extents from the transaction were fully on disk. This introduced large latencies into the commit and stalled new writers in the transaction for a long time. The new code changes the way data allocations and extents work: * When delayed allocation is filled, data extents are reserved, and the extent bit EXTENT_ORDERED is set on the entire range of the extent. A struct btrfs_ordered_extent is allocated an inserted into a per-inode rbtree to track the pending extents. * As each page is written EXTENT_ORDERED is cleared on the bytes corresponding to that page. * When all of the bytes corresponding to a single struct btrfs_ordered_extent are written, The previously reserved extent is inserted into the FS btree and into the extent allocation trees. The checksums for the file data are also updated. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Christoph Hellwig authored
Add kerneldoc comments for all exported functions. Signed-off-by:
Christoph Hellwig <hch@lst.de> Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Christoph Hellwig authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
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>
-
Chris Mason authored
There were a few places that could cause duplicate extent insertion, this adjusts the code that creates holes to avoid it. lookup_extent_map is changed to correctly return all of the extents in a range, even when there are none matching at the start of the range. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Yan authored
test_range_bit doesn't properly handle the case: there's a hole at the end of the range and there's no other extent_state after the range. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
This is intended to prevent accidentally filling the drive. A determined user can still make things oops. It includes some accounting of the current bytes under delayed allocation, but this will change as things get optimized Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
find_lock_delalloc_range could exit out too early Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Christian Hesse authored
--Boundary-00=_CcOWHFYK4T+JwSj Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello everybody, compiling btrfs into the kernel results in section mismatch warnings. __exit functions are called where they are not allowed to. The attached patch fixes this for me. Not sure if it is correct though. Signed-off-by:
Christian Hesse <mail@earthworm.de> -- Regards, Chris --Boundary-00=_CcOWHFYK4T+JwSj Content-Type: text/x-diff; charset="iso-8859-1"; name="btrfs-section_mismatches.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="btrfs-section_mismatches.patch" Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Wyatt Banks authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
It could return the bit as set when there was actually a hole at the very end of the range. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Yan authored
There is a 'finish_wait', but no 'prepare_to_wait' . So I think that the 'prepare_to_wait' is missing. The second change is according to the name of variable. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
The fixes do a number of things: 1) Most btrfs_drop_extent callers will try to leave the inline extents in place. It can truncate bytes off the beginning of the inline extent if required. 2) writepage can now update the inline extent, allowing mmap writes to go directly into the inline extent. 3) btrfs_truncate_in_transaction truncates inline extents 4) extent_map.c fixed to not merge inline extent mappings and hole mappings together Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Yan authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-