Chris Mason
85e21bac16
Btrfs: During deletes and truncate, remove many items at once from the tree
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:00 -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
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
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
01f4665805
Btrfs: Less aggressive readahead on deletes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
4aec2b5232
kmalloc a few large stack objects in the btrfs_ioctl path
...
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
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
Yan
eef1c494a2
Btrfs: Properly update right_nritems in push_leaf_left
...
The codes that fixup the right leaf and the codes that dirty the
extnet buffer use the variable 'right_nritems' , both of them expect
'right_nritems' is the number of items in right leaf after the push.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:58 -04:00
Chris Mason
34a3821873
Btrfs: Change push_leaf_{leaf,right} to empty the src leave during item deletion
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
081e95736d
Btrfs: Make defrag check nodes against the progress key to prevent repeating work
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
179e29e488
Btrfs: Fix a number of inline extent problems that Yan Zheng reported.
...
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>
2008-09-25 11:03:57 -04:00
Chris Mason
5708b95916
Btrfs: Tune the automatic defrag code
...
1) Forced defrag wasn't working properly (btrfsctl -d) because some
cache only checks were incorrect.
2) Defrag only the leaves unless in forced defrag mode.
3) Don't use complex logic to figure out if a leaf is needs defrag
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:03:57 -04:00
Chris Mason
cc0c553847
Btrfs: Fix split_leaf to detect when it is extending an item
...
When making room for a new item, it is ok to create an empty leaf, but
when making room to extend an item, split_leaf needs to make sure it
keeps the item we're extending in the path and make sure we don't end up
with an empty leaf.
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
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
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
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
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
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
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
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
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
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
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
86479a04ee
Add support for defragging files via btrfsctl -d. Avoid OOM on extent tree
...
defrag.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-09-10 19:58:16 -04:00
Yan
252c38f069
Btrfs: ctree.c cleanups
...
Fixup a few buffer_head release errors, and fix an off by one in
balance_node_right.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-08-29 09:11:44 -04:00
Chris Mason
2cc58cf24f
Btrfs: Do more extensive readahead during tree searches
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-08-27 16:49:44 -04:00
Yan
3202061128
fix block readahead in btrfs_next_leaf
...
Send the correct slot down to reada_for_search
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-08-27 15:17:54 -04:00
Chris Mason
f2183bde1a
Btrfs: Add BH_Defrag to mark buffers that are in need of defragging
...
This allows the tree walking code to defrag only the newly allocated
buffers, it seems to be a good balance between perfect defragging and the
performance hit of repeatedly reallocating blocks.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-08-10 14:42:37 -04:00
Chris Mason
e9d0b13b5b
Btrfs: Btree defrag on the extent-mapping tree as well
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-08-10 14:06:19 -04:00
Chris Mason
6702ed490c
Btrfs: Add run time btree defrag, and an ioctl to force btree defrag
...
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>
2007-08-07 16:15:09 -04:00
Chris Mason
3c69faecb8
Btrfs: Fold some btree readahead routines into something more generic.
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-08-07 15:52:22 -04:00
Chris Mason
9f3a742736
Btrfs: Do snapshot deletion in smaller chunks.
...
Before, snapshot deletion was a single atomic unit. This caused considerable
lock contention and required an unbounded amount of space. Now,
the drop_progress field in the root item is used to indicate how far along
snapshot deletion is, and to resume where it left off.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-08-07 15:52:19 -04:00
Aneesh
a1f396304f
Btrfs: Some code cleanups
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-07-11 10:03:27 -04:00
Zach Brown
ec6b910fb3
Btrfs: trivial include fixups
...
Almost none of the files including module.h need to do so,
remove them.
Include sched.h in extent-tree.c to silence a warning about cond_resched()
being undeclared.
Signed-off-by: Zach Brown <zach.brown@oracle.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-07-11 10:00:37 -04:00
Chris Mason
ccd467d60e
Btrfs: crash recovery fixes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-06-28 15:57:36 -04:00
Chris Mason
54aa1f4dfd
Btrfs: Audit callers and return codes to make sure -ENOSPC gets up the stack
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-06-22 14:16:25 -04:00
Aneesh
f1ace244c8
btrfs: Code cleanup
...
Attaching below is some of the code cleanups that i came across while
reading the code.
a) alloc_path already calls init_path.
b) Mention that btrfs_inode is the in memory copy.Ext4 have ext4_inode_info as
the in memory copy ext4_inode as the disk copy
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-06-13 16:18:26 -04:00
Chris Mason
6cbd557078
Btrfs: add GPLv2
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-06-12 09:07:21 -04:00
Chris Mason
098f59c251
Btrfs: patch queue: fix corruption when splitting large items
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-05-11 11:33:21 -04:00
Chris Mason
8d7be552a7
Btrfs: fix check_node and check_leaf to use less cpu
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-05-10 11:24:42 -04:00
Chris Mason
31f3c99b73
Btrfs: allocator improvements, inode block groups
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-30 15:25:45 -04:00
Chris Mason
4d77567309
Btrfs: add owner and type fields to the extents aand block headers
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-20 20:23:12 -04:00
Chris Mason
33ade1f826
Btrfs: node balance optimizations
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-20 13:48:57 -04:00
Chris Mason
e66f709b15
Btrfs: write barriers on commit, balance level before split
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-20 13:16:02 -04:00
Chris Mason
a429e51371
Btrfs: working file_write, reorganized key flags
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-18 16:15:28 -04:00
Chris Mason
70b2befd0c
Btrfs: rework csums and extent item ordering
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-17 15:39:32 -04:00
Chris Mason
b18c668581
Btrfs: progress on file_write
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-17 13:26:50 -04:00
Chris Mason
6567e837df
Btrfs: early work to file_write in big extents
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-16 09:22:45 -04:00
Chris Mason
7eccb903a8
Btrfs: create a logical->phsyical block number mapping scheme
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-11 15:53:25 -04:00
Chris Mason
d0dbc6245c
Btrfs: drop owner and parentid
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-10 12:36:36 -04:00
Chris Mason
3eb0314dc1
Btrfs: uuids
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-05 14:28:50 -04:00
Chris Mason
d4dbff953e
Btrfs: support for items bigger than 1/2 the blocksize
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-04 14:08:15 -04:00
Chris Mason
df24a2b9c9
Btrfs: early inline file data code
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-04 09:36:31 -04:00
Chris Mason
2c90e5d658
Btrfs: still corruption hunting
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-04-02 10:50:19 -04:00
Chris Mason
d602557953
Btrfs: corruption hunt continues
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-30 14:27:56 -04:00
Chris Mason
22b0ebda6c
Btrfs: hunting slab corruption
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-30 08:47:31 -04:00
Chris Mason
f254e52c1c
Btrfs: verify csums on read
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-29 15:15:27 -04:00
Chris Mason
9a6f11ed8f
Btrfs: split out level field in struct header
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-27 09:06:38 -04:00
Chris Mason
7f5c15160e
Add generation number to btrfs_header, readdir fixes, hash collision fixes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-23 15:56:19 -04:00
Chris Mason
d571976292
btrfs_create, btrfs_write_super, btrfs_sync_fs
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-23 10:01:08 -04:00
Chris Mason
e20d96d64f
Mountable btrfs, with readdir
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-22 12:13:20 -04:00
Chris Mason
2e635a2783
Btrfs: initial move to kernel module land
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-21 11:12:56 -04:00
Chris Mason
4068947886
Btrfs: minor comments
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-17 14:29:23 -04:00
Chris Mason
e089f05c18
Btrfs: transaction handles everywhere
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-16 16:20:31 -04:00
Chris Mason
88fd146c27
Btrfs: pin freed blocks from the FS tree too
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-16 08:56:18 -04:00
Chris Mason
a8a2ee0c60
Btrfs: add a name_len to dir items, reorder key
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-16 08:46:49 -04:00
Chris Mason
62e2749e03
Btrfs: Use a chunk of the key flags to record the item type.
...
Add (untested and simple) directory item code
Fix comp_keys to use the new key ordering
Add btrfs_insert_empty_item
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-15 12:56:47 -04:00
Chris Mason
123abc88c9
Btrfs: variable block size support
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-14 14:14:43 -04:00
Chris Mason
eaee50e881
Btrfs: merge leaves before split
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-13 11:17:52 -04:00
Chris Mason
9aca1d5132
Btrfs: make some funcs static
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-13 11:09:37 -04:00
Chris Mason
234b63a091
rename funcs and structs to btrfs
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-13 10:46:10 -04:00
Chris Mason
1d4f8a0c1e
Btrfs: node->blockptrs endian fixes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-13 09:28:32 -04:00
Chris Mason
0783fcfc4d
Btrfs: struct item endian fixes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-12 20:12:07 -04:00
Chris Mason
e2fa7227cd
Btrfs: struct key endian fixes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-12 16:22:34 -04:00
Chris Mason
7518a238ea
Btrfs: get/set for struct header fields
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-12 12:01:18 -04:00
Chris Mason
037e639048
Btrfs: get rid of add recursion
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-07 11:50:24 -05:00
Chris Mason
a28ec19775
Btrfs: Fixup reference counting on cows
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-06 20:08:01 -05:00
Chris Mason
02217ed299
Btrfs: early reference counting
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-02 16:08:05 -05:00
Chris Mason
f0930a37f1
Btrfs: Fix extent code to use merge during delete
...
Remove implicit commit in del_item and insert_item
Add implicit commit to close()
Add commit op in random-test
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-02 09:47:58 -05:00
Chris Mason
ed2ff2cba7
Btrfs: pretend page cache & commit code
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-01 18:59:40 -05:00
Chris Mason
79f95c82dc
Btrfs: Fixup the code to merge during path walks
...
Add a bulk insert/remove test to random-test
Add the quick-test code back as another regression test
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-01 15:16:26 -05:00
Chris Mason
bb8039515d
Btrfs: merge on the way down during deletes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-03-01 12:04:21 -05:00
Chris Mason
0f70abe2b3
Btrfs: more return code checking
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-28 16:46:22 -05:00
Chris Mason
aa5d6bed25
Btrfs: return code checking
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-28 16:35:06 -05:00
Chris Mason
8e19f2cd45
Btrfs: Take out the merge-during-search-on-delete code, it is buggy.
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-28 09:27:02 -05:00
Chris Mason
fec577fb7f
Btrfs: Add fsx-style randomized tree tester
...
Add debug-tree command to print the tree
Add extent-tree.c to the repo
Comment ctree.h
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-26 10:40:21 -05:00
Chris Mason
97571fd0c9
Btrfs: cleanup & comment
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-24 13:39:08 -05:00
Chris Mason
00ec4c5161
Btrfs: push_leaf_right
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-24 12:47:20 -05:00
Chris Mason
5de08d7d50
Btrfs: Break up ctree.c a little
...
Extent fixes
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-24 06:24:44 -05:00
Chris Mason
9a8dd1502d
Btrfs: Block sized tree extents and extent deletion
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-23 08:38:36 -05:00
Chris Mason
5c680ed620
Btrfs: switch to early splits
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-22 11:39:13 -05:00
Chris Mason
cfaa72952f
Btrfs: extent fixes
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-21 17:04:57 -05:00
Chris Mason
d97e63b69e
Btrfs: early extent mapping support
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-20 16:40:44 -05:00
Chris Mason
74123bd72a
Btrfs: Commenting/cleanup
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-02 11:05:29 -05:00
Chris Mason
eb60ceac0e
Btrfs: Add backing store, memory management
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-02-02 09:18:22 -05:00
Chris Mason
4920c9ac9a
Btrfs: Faster deletes, add Makefile and kerncompat
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-01-26 16:38:42 -05:00
Chris Mason
be0e5c097f
Btrfs: Initial checkin, basic working tree code
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2007-01-26 15:51:26 -05:00