- 25 Sep, 2008 9 commits
-
-
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>
-
Chris Mason authored
The btree defragger wasn't making forward progress because the new key wasn't being saved by the btrfs_search_forward function. This also disables the automatic btree defrag, it wasn't scaling well to huge filesystems. The auto-defrag needs to be done differently. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
This creates one kthread for commits and one kthread for deleting old snapshots. All the work queues are removed. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
The existing throttle mechanism was often not sufficient to prevent new writers from coming in and making a given transaction run forever. This adds an explicit wait at the end of most operations so they will allow the current transaction to close. There is no wait inside file_write, inode updates, or cow filling, all which have different deadlock possibilities. This is a temporary measure until better asynchronous commit support is added. This code leads to stalls as it waits for data=ordered writeback, and it really needs to be fixed. 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
It is very difficult to create a consistent snapshot of the btree when other writers may update the btree before the commit is done. This changes the snapshot creation to happen during the commit, while no other updates are possible. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
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>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 11 Sep, 2007 1 commit
-
-
Chris Mason authored
Dead roots are trees left over after a crash, and they were either in the process of being removed or were waiting to be removed when the box crashed. Before, a search of the entire tree of root pointers was done on mount looking for dead roots. Now, the search is done the first time we load a root. This makes mount faster when there are a large number of snapshots, and it enables the block accounting code to properly update the block counts on the latest root as old versions of the root are reaped after a crash. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 10 Aug, 2007 2 commits
-
-
Josef Bacik authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 08 Aug, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 07 Aug, 2007 1 commit
-
-
Chris Mason authored
This adds two types of btree defrag, a run time form that tries to defrag recently allocated blocks in the btree when they are still in ram, and an ioctl that forces defrag of all btree blocks. File data blocks are not defragged yet, but this can make a huge difference in sequential btree reads. Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 22 Jun, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 12 Jun, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 08 Jun, 2007 2 commits
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 30 Apr, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 28 Apr, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 19 Apr, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 02 Apr, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 22 Mar, 2007 2 commits
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-
- 16 Mar, 2007 1 commit
-
-
Chris Mason authored
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
-