Chris Mason
b431f25ec7
Rev the disk format for the new back reference format
...
Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-10-09 13:40:23 -04:00
Yan Zheng
9559e0b09e
Count space allocated to file in bytes
...
This patch updates btrfs-progs for counting space
allocated to file in bytes.
Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
2008-10-09 11:55:26 -04:00
Yan Zheng
5986faaf47
Remove offset field from struct btrfs_extent_ref
...
The offset field in struct btrfs_extent_ref records the position
inside file that file extent is referenced by. In the new back
reference system, tree leaves holding reference to file extent
are recorded explicitly. We can quickly scan these tree leaves, so the
offset field is not required.
This patch also makes the back reference system check the objectid
when extents are being deleted
Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
2008-10-09 11:55:30 -04:00
Zheng Yan
428b7fa630
Full back reference support
...
This patch makes the back reference system to explicit record the
location of parent node for all types of extents. The location of
parent node is placed into the offset field of backref key. Every
time a tree block is balanced, the back references for the affected
lower level extents are updated.
2008-09-23 12:29:10 -04:00
Chris Mason
cea88ec1d7
Disk format changes required for write ahead tree log
2008-09-05 16:15:58 -04:00
Chris Mason
2f2f9ef77a
Rev the disk format
2008-08-21 15:49:34 -04:00
Josef Bacik
0045e0dd70
btrfs-progs: add orphan support to print-tree
...
This adds orphan support to print-tree so when debug_tree hits an orphan item it
will print out "orphan item" under it so you know what it is
2008-07-30 09:15:02 -04:00
Chris Mason
e74b89d675
Rev the disk format
2008-07-24 13:52:04 -04:00
Josef Bacik
059c20b384
btrfs-progs new dir index support
2008-07-24 12:13:32 -04:00
Chris Mason
a62332eeb2
Add a readonly flag open_ctree to force RO opens
2008-05-05 09:45:26 -04:00
Chris Mason
083faf794f
Add mkfs.btrfs -A offset to control allocation start on devices
...
This is a utility option for the resizer, it makes sure to allocate
at offset bytes in the disk or higher. It ensures the resizer will have
something to move when testing it.
2008-04-25 16:55:21 -04:00
Yan Zheng
4415143185
Speed improvement and bug fixes for ext3 converter
...
This patch improves converter's allocator and fixes a bug in data relocation
function. The new allocator caches free blocks as Btrfs's default allocator.
In testing here, the user CPU time reduced to half of the original when
checksum and small file packing was disabled. This patch also enlarges the
size of block groups created by the converter.
2008-04-24 14:57:50 -04:00
Chris Mason
8bfbb6b6f8
Update the Ext3 converter
...
The main changes in this patch are adding chunk handing and data relocation
ability. In the last step of conversion, the converter relocates data in system
chunk and move chunk tree into system chunk. In the rollback process, the
converter remove chunk tree from system chunk and copy data back.
Regards
YZ
---
2008-04-22 14:06:56 -04:00
Chris Mason
588bb9dfff
Add support for filesystem labels via mkfs.btrfs -L
2008-04-18 10:31:42 -04:00
Chris Mason
d25165e95c
Use device uuids when scanning devices
2008-04-18 10:31:42 -04:00
Chris Mason
1f81c1b6fc
Add raid10 support
2008-04-16 11:14:21 -04:00
Chris Mason
951fd7371c
Add chunk uuids and update multi-device back references
...
Block headers now store the chunk tree uuid
Chunk items records the device uuid for each stripes
Device extent items record better back refs to the chunk tree
Block groups record better back refs to the chunk tree
The chunk tree format has also changed. The objectid of BTRFS_CHUNK_ITEM_KEY
used to be the logical offset of the chunk. Now it is a chunk tree id,
with the logical offset being stored in the offset field of the key.
This allows a single chunk tree to record multiple logical address spaces,
upping the number of bytes indexed by a chunk tree from 2^64 to
2^128.
2008-04-15 15:42:08 -04:00
Chris Mason
a37e1e7204
Recow all roots at the end of mkfs
...
The mkfs code bootstraps the filesystem on a single device. Once
the raid block groups are setup, it needs to recow all of the blocks so
that each tree is properly allocated.
2008-04-04 15:42:17 -04:00
Chris Mason
c7be130df7
Add support for single single duplication of metadata
2008-04-03 16:35:48 -04:00
Chris Mason
a6de0bd778
Add mirroring support across multiple drives
2008-04-03 16:35:48 -04:00
Chris Mason
ad67cd73b7
Update struct btrfs_header flags, and use it to indicate buffers are written
2008-04-01 10:20:06 -04:00
Chris Mason
e9e3422f85
Implement raid0 when multiple devices are present
...
This defaults to striping across all devices
2008-03-25 16:50:20 -04:00
Chris Mason
0dcfa3b827
Walk all block devices looking for btrfs
2008-03-24 15:05:44 -04:00
Chris Mason
26afd0f31d
ioctls to scan for btrfs filesystems
2008-03-24 15:04:49 -04:00
Chris Mason
1f3ba6a3f9
Btrfsck updates for multi-device filesystems
2008-03-24 15:04:37 -04:00
Chris Mason
d12d4c7203
Dynamic chunk allocation
2008-03-24 15:03:58 -04:00
Chris Mason
510be29677
Add support for multiple devices per filesystem
2008-03-24 15:03:18 -04:00
Chris Mason
aa69dec31c
Add inode item and backref in one insert, reducing cpu usage
2008-01-29 15:15:18 -05:00
Chris Mason
cbf87cad07
During deletes and truncate, remove many items at once from the tree
2008-01-29 15:11:36 -05:00
Chris Mason
80791984f6
Rename the extent_map code to extent_io
...
This mirrors the changes in the kernel code.
2008-03-04 11:16:54 -05:00
David Miller
8871a0eaa9
Unaligned access fixes
...
The first problem is that these SETGET macros lose typing information,
and therefore can't see the 'packed' attribute and therefore take
unaligned access SIGBUS signals on sparc64 when trying to derefernce
the member.
The next problem is a similar issue in btrfs_name_hash(). This gets
passed things like &key.offset which is a member of a packed
structure, losing this packed'ness information btrfs_name_hash()
performs a potentially unaligned memory access, again resulting in a
SIGBUS.
2008-02-15 11:19:58 -05:00
Chris Mason
f64e047c7c
Update magic
2008-02-04 10:11:12 -05:00
Chris Mason
8ee59c9f2a
Change the magic to rev the disk format
2008-01-14 13:35:53 -05:00
Yan
3a3123bfc1
Add readonly inode flag
...
This patch adds readonly inode flag support. A file with this flag
can't be modified, but can be deleted.
2008-01-14 13:35:00 -05:00
Yan
b86a827172
A few update for btrfs-progs
...
Hello,
This patch adds inode flags definition to btrfs-progs and updates
extent-tree.c to match the kernel.
2008-01-08 15:55:08 -05:00
Yan
84b99666be
Update find_free_extent for the ext3 conversion tool
...
This patch adds customized find_free_extent support to btrfs-progs,
the conversion program requires this.
2008-01-04 10:41:19 -05:00
Yan
7777e63b42
Update btrfs-progs to match kernel sources
2008-01-04 10:38:22 -05:00
Chris Mason
29bf1724b1
Reorder extent back refs to differentiate file data from btree blocks
2007-12-13 11:12:45 -05:00
Chris Mason
140d96a562
Create macros to generation set/get funcs for on disk structures
2007-12-12 14:39:46 -05:00
Chris Mason
fba66bd865
Add back pointers from the inode to the directory that referenced it
2007-12-12 14:39:36 -05:00
Chris Mason
4122e65cb2
Add back pointers from extents to the file or btree referencing them
2007-12-11 09:21:42 -05:00
Chris Mason
73372dcf8f
Add generation numbers to block pointers
2007-12-09 13:46:24 -05:00
Yan
07a4f1b81d
Update btrfs-progs to better match the kernel
2007-12-05 10:41:38 -05:00
Chris Mason
1883251686
Add simple stripe size parameter
2007-11-30 11:30:24 -05:00
Josef Bacik
e3815ddde6
xattr support for btrfs-progs
2007-11-16 11:46:07 -05:00
Chris Mason
678af9b3a4
Remove the last radix tree (block_group_cache)
2007-10-17 09:58:56 -04:00
Chris Mason
28de03cb0a
Create a slightly more generic extent-caching structure
2007-10-15 16:25:41 -04:00
Chris Mason
38f79f9077
Switch to byte granular allocations
2007-10-15 16:25:14 -04:00
Chris Mason
08c66b7738
Stop using radix trees to record pending allocations
2007-10-15 16:25:04 -04:00
Chris Mason
f12d799856
Allow large blocks
2007-10-15 16:24:39 -04:00
Josef Bacik
ffaff17911
btrfs-progs support for root block accounting
...
This adds support for keeping track of the number of blocks used by
root_item's. This makes it so that mkfs lays down the "default" subvol with
the correct block accounting in place. Thank you,
2007-08-29 15:56:44 -04:00
Josef Bacik
4623a01bdc
calculate checksums during IO
2007-06-28 16:20:29 -04:00
Chris Mason
c3bbf0c093
disk format updates for finding dead roots
2007-06-22 14:37:48 -04:00
Chris Mason
d9f1317c7d
add GPLv2
2007-06-12 09:07:11 -04:00
Chris Mason
b53a236c3e
remove device tree
2007-06-09 09:22:37 -04:00
Chris Mason
84e9d08a4b
endian fixes, makefile fixes
2007-06-07 22:12:21 -04:00
Chris Mason
9b25940b9d
data vs metadata flag for block groups
2007-05-30 10:21:32 -04:00
Chris Mason
007e5efb9b
allocator improvements, inode block groups
2007-04-30 15:25:49 -04:00
Chris Mason
5856b7e124
start of block group code
2007-04-26 16:46:06 -04:00
Chris Mason
10d06538f1
get rid of the extent_item type field
2007-04-24 12:09:01 -04:00
Chris Mason
d7260c060c
faster btrfsck
2007-04-23 15:56:27 -04:00
Chris Mason
2f2264fc2d
add owner and type fields to the extents aand block headers
2007-04-20 20:23:29 -04:00
Chris Mason
07eb5008f3
bring back the inode number directory index
2007-04-19 15:41:24 -04:00
Chris Mason
eb3bd5da66
inline file data in extents
2007-04-19 13:38:02 -04:00
Chris Mason
8c973943bb
key flag reorg
2007-04-18 16:15:47 -04:00
Chris Mason
8d1d13c786
rework csum and extent item ordering
2007-04-17 15:40:34 -04:00
Chris Mason
23218726a2
early work to file_write in big extents
2007-04-16 09:23:09 -04:00
Chris Mason
3eaaf935e5
add some support for multiple devices to progs
2007-04-12 12:14:47 -04:00
Chris Mason
d23ea8706c
early support for multiple devices
2007-04-11 13:57:55 -04:00
Chris Mason
6d9ce71c81
use a different inode number for subvols than the root root dir
2007-04-11 08:58:53 -04:00
Chris Mason
e52d2e2fa1
drop owner and parentid
2007-04-10 12:36:58 -04:00
Chris Mason
1b4ca380ed
drop the inode map tree
2007-04-10 12:13:29 -04:00
Chris Mason
86c2d78728
groundwork for subvolume and snapshot roots
2007-04-09 10:42:55 -04:00
Chris Mason
8accdae27a
start of support for subvolumes
2007-04-06 15:39:12 -04:00
Chris Mason
b6414c8ee2
finish off inode indexing in dirs, add overflows
2007-04-05 12:13:45 -04:00
Chris Mason
6542904d95
dir inode index
2007-04-04 21:23:26 -04:00
Chris Mason
1330edb0bc
sync up with kernel sources
2007-04-02 14:18:17 -04:00
Chris Mason
b21892315c
csum data struct changes
2007-03-29 15:15:49 -04:00
Chris Mason
f66f572037
move csum fields around
2007-03-28 19:45:38 -04:00
Chris Mason
03b3655fb4
add generation to file extents
2007-03-27 09:15:24 -04:00
Chris Mason
e6819928c8
first free objectid fixes
2007-03-27 06:25:01 -04:00
Chris Mason
4200896a53
add file extents to print_leaf
2007-03-26 16:01:00 -04:00
Chris Mason
132db51b1f
generations on headers
2007-03-26 11:24:42 -04:00
Chris Mason
8a2c8123c5
create a root dir in mkfs
2007-03-21 11:13:29 -04:00
Chris Mason
b55672a2a1
Better block record keeping, real mkfs
2007-03-20 20:35:03 -04:00
Chris Mason
ab61081c6c
change dir-test to insert inode_items
2007-03-20 15:57:25 -04:00
Chris Mason
099f1ae6e4
Add inode map, and the start of file extent items
2007-03-20 14:38:32 -04:00
Chris Mason
f247156e4f
transaction handles everywhere
2007-03-16 16:20:31 -04:00
Chris Mason
3d8c87f4f7
pin freed blocks from the FS tree too
2007-03-16 08:56:18 -04:00
Chris Mason
80fabe2ee0
add a name_len to dir items, reorder key
2007-03-16 08:46:49 -04:00
Chris Mason
da085a5803
add inode item
2007-03-15 19:03:33 -04:00
Chris Mason
e89de2d271
directory testing code and dir item fixes
2007-03-15 15:18:43 -04:00
Chris Mason
da99898c78
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
2007-03-15 12:56:47 -04:00
Chris Mason
c8afca944b
reorder key offset and flags
2007-03-14 14:26:53 -04:00
Chris Mason
7a0a809b4c
variable block size support
2007-03-14 14:14:43 -04:00
Chris Mason
942050de0e
add leaf data casting helper
2007-03-14 10:31:29 -04:00
Chris Mason
d9c9960f8d
Change the super to point to a tree of trees to enable persistent snapshots
2007-03-13 16:47:54 -04:00
Chris Mason
aa60202f13
rename funcs and structs to btrfs
2007-03-13 10:46:10 -04:00
Chris Mason
56042e6ad4
struct extent_item endian
2007-03-13 09:49:06 -04:00
Chris Mason
3192451f58
node->blockptrs endian fixes
2007-03-13 09:28:32 -04:00
Chris Mason
f6a88938c6
struct item endian fixes
2007-03-12 20:12:07 -04:00
Chris Mason
b2e2afd7b4
struct key endian fixes
2007-03-12 16:22:34 -04:00
Chris Mason
ce3b109650
Add sparse endian annotations to struct header
...
rename struct header to btrfs_header
2007-03-12 12:29:44 -04:00
Chris Mason
8e17fab249
get/set for struct header fields
2007-03-12 12:01:18 -04:00
Chris Mason
2adfc44778
Fixup last found extent caching
2007-03-07 16:15:30 -05:00
Chris Mason
79b90e3fdf
Fixup reference counting on cows
2007-03-06 20:08:01 -05:00
Chris Mason
7da449a2f6
early reference counting
2007-03-02 16:08:05 -05:00
Chris Mason
a71a25da69
pretend page cache & commit code
2007-03-01 18:59:40 -05:00
Chris Mason
8f3b86bae3
Add fsx-style randomized tree tester
...
Add debug-tree command to print the tree
Add extent-tree.c to the repo
Comment ctree.h
2007-02-26 10:40:21 -05:00
Chris Mason
74556aa757
Break up ctree.c a little
...
Extent fixes
2007-02-24 06:24:44 -05:00
Chris Mason
c6c63c3e74
Block sized tree extents and extent deletion
2007-02-23 08:38:36 -05:00
Chris Mason
72777fbe29
extent fixes
2007-02-21 17:04:57 -05:00
Chris Mason
c12e4863d2
early extent mapping support
2007-02-20 16:40:44 -05:00
Chris Mason
215ad20a9b
Add backing store, memory management
2007-02-02 09:18:22 -05:00