Chris Mason [Wed, 23 Jul 2008 15:36:13 +0000 (11:36 -0400)]
Add .hgignore file to ignore verison.h
Chris Mason [Tue, 10 Jun 2008 14:09:18 +0000 (10:09 -0400)]
Add sync and transaction ioctl defs
btrfsctl -c forces a single FS sync
The transaction ioctls are unsafe for general use because they can lead
to deadlocks if the application is not very careful. But, ceph is
experimenting with btrfs as a backing store, and these ioctls are required
for testing.
Linda Knippers [Tue, 10 Jun 2008 02:23:13 +0000 (22:23 -0400)]
btrfsctl: print usage when called with bad args
Chris Mason [Thu, 29 May 2008 14:32:09 +0000 (10:32 -0400)]
Added tag v0.15 for changeset
e6571e2ce0c8
Chris Mason [Tue, 13 May 2008 17:48:58 +0000 (13:48 -0400)]
Verify parent generation number on btree reads
Chris Mason [Mon, 12 May 2008 17:51:24 +0000 (13:51 -0400)]
Pass down the expected generation number when reading tree blocks
Chris Mason [Mon, 12 May 2008 17:01:57 +0000 (13:01 -0400)]
Fix the pretty print code for num_bytes == 0
Chris Mason [Mon, 5 May 2008 13:45:26 +0000 (09:45 -0400)]
Add a readonly flag open_ctree to force RO opens
Chris Mason [Fri, 2 May 2008 20:12:02 +0000 (16:12 -0400)]
bcp updates for single file copies
Chris Mason [Fri, 2 May 2008 19:08:08 +0000 (15:08 -0400)]
Add bcp to test the clone file ioctl
Chris Mason [Fri, 2 May 2008 19:05:11 +0000 (15:05 -0400)]
Fix compiler warning in volumes.c
Chris Mason [Fri, 2 May 2008 15:05:21 +0000 (11:05 -0400)]
Add the clone ioctl number
Chris Mason [Thu, 1 May 2008 14:22:47 +0000 (10:22 -0400)]
Fix uninitialized variables, and use -O so gcc starts checking for them
Gcc only sends warnings for uninitialized variables when you compile with -O,
and there were a couple of bugs sprinkled in the code. The biggest was the
alloc_start variable for mkfs, which can cause strange things to happen.
(thanks to Gabor Micsko for helping to find this)
Chris Mason [Tue, 29 Apr 2008 18:29:18 +0000 (14:29 -0400)]
Added tag v0.14 for changeset
969099968b60
Zhu [Mon, 28 Apr 2008 20:45:11 +0000 (16:45 -0400)]
Fix btrfs-convert's large file support.
This patch add ext2_inode.i_size_high into account when calculating regular
file's size in btrfs-convert, which makes it deal with large files bigger than
4GB properly.
Chris Mason [Mon, 28 Apr 2008 20:44:22 +0000 (16:44 -0400)]
Add btrfs-vol command to balance, add and (eventually) remove devices
Chris Mason [Fri, 25 Apr 2008 20:55:21 +0000 (16:55 -0400)]
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.
Yan Zheng [Thu, 24 Apr 2008 18:57:50 +0000 (14:57 -0400)]
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.
Chris Mason [Thu, 24 Apr 2008 18:46:15 +0000 (14:46 -0400)]
Fix balance_level to free the middle block if there is room in the left one
balance level starts by trying to empty the middle block, and then
pushes from the right to the middle. This might empty the right block
and leave a small number of pointers in the middle.
Chris Mason [Thu, 24 Apr 2008 14:54:32 +0000 (10:54 -0400)]
Don't empty the middle buffer in push_nodes_for_insert
Chris Mason [Thu, 24 Apr 2008 14:18:25 +0000 (10:18 -0400)]
Keep more pointers free in the nodes for double splits
Chris Mason [Tue, 22 Apr 2008 18:30:52 +0000 (14:30 -0400)]
Drop quick-test from the list of programs built by default
Chris Mason [Tue, 22 Apr 2008 18:06:56 +0000 (14:06 -0400)]
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
---
Chris Mason [Tue, 22 Apr 2008 18:06:31 +0000 (14:06 -0400)]
Add a command to show all of the btrfs filesystems on the box (btrfs-show)
Chris Mason [Fri, 18 Apr 2008 15:56:21 +0000 (11:56 -0400)]
Fix chunk allocation when some devices don't have enough room for the stripe
Chris Mason [Fri, 18 Apr 2008 14:45:17 +0000 (10:45 -0400)]
Add checks to avoid adding the same device twice during mkfs
Chris Mason [Fri, 18 Apr 2008 14:31:42 +0000 (10:31 -0400)]
Use better chunk sizes for small and large filesystems
Chris Mason [Fri, 18 Apr 2008 14:31:42 +0000 (10:31 -0400)]
Add support for filesystem labels via mkfs.btrfs -L
Chris Mason [Fri, 18 Apr 2008 14:31:42 +0000 (10:31 -0400)]
Use device uuids when scanning devices
Chris Mason [Wed, 16 Apr 2008 15:14:21 +0000 (11:14 -0400)]
Add raid10 support
Chris Mason [Tue, 15 Apr 2008 19:42:08 +0000 (15:42 -0400)]
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.
Chris Mason [Tue, 15 Apr 2008 15:32:17 +0000 (11:32 -0400)]
Fix up the quick btree code test program
Chris Mason [Fri, 11 Apr 2008 16:18:46 +0000 (12:18 -0400)]
Fix a few casts for 32 bit compile
Chris Mason [Thu, 10 Apr 2008 20:22:00 +0000 (16:22 -0400)]
Write all super blocks during commit
Chris Mason [Wed, 9 Apr 2008 20:28:12 +0000 (16:28 -0400)]
Retry metadata reads in the face of checksum failures
Chris Mason [Wed, 9 Apr 2008 20:28:12 +0000 (16:28 -0400)]
Change btrfs_map_block to return a structure with mappings for all stripes
Chris Mason [Fri, 4 Apr 2008 19:40:00 +0000 (15:40 -0400)]
Don't allow written blocks from this transaction to be reallocated
When a block is freed, it can be immediately reused if it is from
the current transaction. But, an extra check is required to make sure
the block had not been written yet. If it were reused after being written,
the transid in the block header might match the transid of the
next time the block was allocated.
The parent node records the transaction ID of the block it is pointing to,
and this is used as part of validating the block on reads. So, there
can only be one version of a block per transaction.
Chris Mason [Wed, 9 Apr 2008 23:49:01 +0000 (19:49 -0400)]
Use leafsize and nodesize == pagesize for now
Chris Mason [Fri, 4 Apr 2008 19:42:17 +0000 (15:42 -0400)]
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.
Chris Mason [Thu, 3 Apr 2008 20:35:48 +0000 (16:35 -0400)]
Add mkfs options for data and metadata mirroring modes
mkfs.btrfs --data {raid0,raid1,single}
mkfs.btrfs --metadata {raid0,raid1,single}
In single mode, no extra duplication or striping is done.
In raid0 mode, blocks are spread across all of the available devices
In raid1 mode, blocks are mirrored across two devices.
For metadata, if raid1 is used and there is only one device, the
metadata is duplicated on that single spindle.
The defaults are raid0 for data and raid1 for metadata
Chris Mason [Thu, 3 Apr 2008 20:35:48 +0000 (16:35 -0400)]
Add support for single single duplication of metadata
Chris Mason [Thu, 3 Apr 2008 20:35:48 +0000 (16:35 -0400)]
Add mirroring support across multiple drives
Chris Mason [Tue, 1 Apr 2008 15:08:13 +0000 (11:08 -0400)]
Use getopt_long and introduce long mkfs options. -s now means --sectorsize
Alex Chiang [Tue, 1 Apr 2008 14:52:22 +0000 (10:52 -0400)]
btrfs-progs: Fix printf format casting errors
We get lots of warnings of the flavor:
utils.c:441: warning: format '%Lu' expects type 'long long unsigned int' but argument 2 has type 'u64'
And thanks to -Werror, the build fails. Clean up these printfs
by properly casting the arg to the format specified.
Signed-off-by: Alex Chiang <achiang@hp.com>
Alex Chiang [Tue, 1 Apr 2008 14:38:51 +0000 (10:38 -0400)]
btrfs-progs: Stop stomping on 'name' input parameter
In btrfs_name_hash, Local variable 'buf' is declared as
__u32 buf[2];
but we then try to do this:
buf[0] = 0x67452301;
buf[1] = 0xefcdab89;
buf[2] = 0x98badcfe;
buf[3] = 0x10325476;
Oops. Fix buf to be the proper size.
Signed-off-by: Alex Chiang <achiang@hp.com>
Goldwyn Rodrigues [Tue, 1 Apr 2008 14:36:46 +0000 (10:36 -0400)]
check if partition is mounted before mkfs
This saves from the blunder of formatting a live mounted filesystem.
This can be extended to get the mount flags of the filesystem
mounted.
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@gmail.com>
Chris Mason [Tue, 1 Apr 2008 14:20:06 +0000 (10:20 -0400)]
Update struct btrfs_header flags, and use it to indicate buffers are written
Chris Mason [Tue, 25 Mar 2008 20:50:20 +0000 (16:50 -0400)]
Implement raid0 when multiple devices are present
This defaults to striping across all devices
Chris Mason [Mon, 24 Mar 2008 19:05:44 +0000 (15:05 -0400)]
Walk all block devices looking for btrfs
Chris Mason [Mon, 24 Mar 2008 19:04:49 +0000 (15:04 -0400)]
ioctls to scan for btrfs filesystems
Chris Mason [Mon, 24 Mar 2008 19:04:37 +0000 (15:04 -0400)]
Btrfsck updates for multi-device filesystems
Chris Mason [Mon, 24 Mar 2008 19:03:58 +0000 (15:03 -0400)]
Dynamic chunk allocation
Chris Mason [Mon, 24 Mar 2008 19:03:18 +0000 (15:03 -0400)]
Add support for multiple devices per filesystem
Chris Mason [Tue, 4 Mar 2008 18:07:22 +0000 (13:07 -0500)]
Remove extent back refs in batches, and avoid duplicate searches
Chris Mason [Mon, 4 Feb 2008 15:10:13 +0000 (10:10 -0500)]
Add debugging for block group update failure
Yan [Fri, 1 Feb 2008 19:58:07 +0000 (14:58 -0500)]
Call btrfs_cow_block while lowering tree level.
When freeing root block of a tree, btrfs_free_extent' parameter
'ref_generation' is from root block itseft. When freeing non-root
block, 'ref_generation' is from its parent. so when converting a
non-root block to root block, we must guarantee its generation is
equal to its parent's generation.
Chris Mason [Tue, 4 Mar 2008 16:35:36 +0000 (11:35 -0500)]
Insert extent record and the first backref in a single balance
Chris Mason [Wed, 30 Jan 2008 16:43:54 +0000 (11:43 -0500)]
Copy correct tree when inserting into slot 0
Chris Mason [Tue, 29 Jan 2008 20:15:18 +0000 (15:15 -0500)]
Add inode item and backref in one insert, reducing cpu usage
Chris Mason [Tue, 29 Jan 2008 20:11:36 +0000 (15:11 -0500)]
During deletes and truncate, remove many items at once from the tree
Chris Mason [Tue, 4 Mar 2008 16:23:32 +0000 (11:23 -0500)]
Add some extra debugging around file data checksum failures
Chris Mason [Thu, 24 Jan 2008 21:13:14 +0000 (16:13 -0500)]
Tune readahead during defrag to avoid reading too much at once
Chris Mason [Tue, 4 Mar 2008 16:16:54 +0000 (11:16 -0500)]
Rename the extent_map code to extent_io
This mirrors the changes in the kernel code.
Chris Mason [Tue, 4 Mar 2008 00:55:16 +0000 (19:55 -0500)]
Add debug-tree -e to print all allocated extents, and show-blocks to graph them
Chris Mason [Thu, 21 Feb 2008 19:55:23 +0000 (14:55 -0500)]
Added tag v0.13 for changeset
58b803dc9fae
David Miller [Fri, 15 Feb 2008 16:20:02 +0000 (11:20 -0500)]
CRC32C big endian bugs...
The CRC32C implementation in the btrfs progs is different from the one
in the kernel, so obviously nothing can possibly work on big-endian.
David Miller [Fri, 15 Feb 2008 16:19:58 +0000 (11:19 -0500)]
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.
Chris Mason [Fri, 15 Feb 2008 16:19:26 +0000 (11:19 -0500)]
mkfs: Zero 2MB at the start and end of the device
But, on sparc, don't zero the first 1k.
Chris Mason [Wed, 6 Feb 2008 16:37:45 +0000 (11:37 -0500)]
Added tag v0.12 for changeset
5e8f040cdf7c
Chris Mason [Mon, 4 Feb 2008 15:11:12 +0000 (10:11 -0500)]
Update magic
Chris Mason [Fri, 1 Feb 2008 19:55:03 +0000 (14:55 -0500)]
Hash in the owner and offset for file extent backref keys
Yan [Tue, 22 Jan 2008 16:34:13 +0000 (11:34 -0500)]
Fix for test_range_bit
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.
Kyle McMartin [Tue, 22 Jan 2008 16:32:09 +0000 (11:32 -0500)]
Fix btrfsck args checking
btrfsck fails to check if it actually received a dev argument though, so if you
don't pass a device, we get a nice segfault.
Jan Engelhardt [Tue, 22 Jan 2008 16:32:07 +0000 (11:32 -0500)]
btrfs-progs: build with -D_FORTIFY_SOURCE=2
Add -D_FORTIFY_SOURCE=2 to the makeflags. It has been very helpful
in finding problems.
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Jan Engelhardt [Tue, 22 Jan 2008 16:32:06 +0000 (11:32 -0500)]
btrfs-progs: fix a buffer overflow during mkfs
Using strncpy avoids a 1 byte overflow into the next field
of the struct. The overflow is harmless, but does
trip automated tools.
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
---
utils.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Yan [Tue, 22 Jan 2008 16:32:05 +0000 (11:32 -0500)]
Fix for btrfs_find_free_objectid
btrfs_find_free_objectid may return a used objectid due to arithmetic
underflow. This bug may happen when parameter 'root' is tree root, so
it may cause serious problems when creating snapshot or sub-volume.
Yan [Tue, 22 Jan 2008 16:32:03 +0000 (11:32 -0500)]
Fixes for the converter
Hello,
This patch fixes two newly found bugs in the converter. The important
one is in create_ext2_image, sub-volume root directory's size not
properly updated after creating the ext2 image file. The other one is
a small bug in xattr support codes. In addition to the fixes, this
patch moves the 'if mounted' check to main() function.
Regards
YZ
---
Chris Mason [Thu, 17 Jan 2008 17:58:38 +0000 (12:58 -0500)]
Added tag v0.11 for changeset
b3e59089dab6
Yan [Thu, 17 Jan 2008 17:23:34 +0000 (12:23 -0500)]
Remove kernel-space header in btrfs-progs
When porting ctree.c in btrfs kernel module to btrfs-progs, I forgot
to remove a kernel-space header. This may cause compile error on some
system.
Chris Mason [Tue, 15 Jan 2008 15:33:32 +0000 (10:33 -0500)]
Added tag v0.10 for changeset
548ea8d7514b
Chris Mason [Mon, 14 Jan 2008 19:08:07 +0000 (14:08 -0500)]
Install btrfs-convert during make install
Chris Mason [Mon, 14 Jan 2008 18:35:53 +0000 (13:35 -0500)]
Change the magic to rev the disk format
Yan [Mon, 14 Jan 2008 18:35:00 +0000 (13:35 -0500)]
Add readonly inode flag
This patch adds readonly inode flag support. A file with this flag
can't be modified, but can be deleted.
Yan [Mon, 14 Jan 2008 18:35:00 +0000 (13:35 -0500)]
xattr support for the ext3->btrfs converter
Yan [Mon, 14 Jan 2008 18:35:00 +0000 (13:35 -0500)]
Fix a typo in btrfs-progs/extent_map.c
Hello,
update_extent_state is called with wrong parameter in merge_state.
Yan [Tue, 8 Jan 2008 20:56:32 +0000 (15:56 -0500)]
Add rollback support for the converter
This patch adds rollback support for the converter, the converter can
roll back a conversion if the image file haven't been modified. In
addition, I rearrange some codes in convert.c and add a few comments.
Yan [Tue, 8 Jan 2008 20:55:08 +0000 (15:55 -0500)]
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.
Chris Mason [Mon, 7 Jan 2008 20:25:48 +0000 (15:25 -0500)]
btrfs_print_node: don't use btrfs_item_key_to_cpu on nodes
Chris Mason [Fri, 4 Jan 2008 16:29:55 +0000 (11:29 -0500)]
Add Yan Zheng's ext3->btrfs conversion program
run make convert to build it, the program is named btrfs-convert and is
not installed by default.
Yan [Fri, 4 Jan 2008 15:41:19 +0000 (10:41 -0500)]
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.
Yan [Fri, 4 Jan 2008 15:38:22 +0000 (10:38 -0500)]
Update btrfs-progs to match kernel sources
Yan Zheng [Fri, 4 Jan 2008 15:36:26 +0000 (10:36 -0500)]
Port extent buffer to btrfs-progs
This patch ports extent buffer to btrfs-progs. extent_map.c contains a
simplified extent map tree and functions that manipulate/manage extent
buffer. extent state related codes are based on corresponding codes in
kernel module, codes that manage extent buffer are from disk-io.c.
Chris Mason [Fri, 21 Dec 2007 21:25:35 +0000 (16:25 -0500)]
Add online resizing ioctls
btrfsctl -r size mount_point
Chris Mason [Fri, 14 Dec 2007 16:00:30 +0000 (11:00 -0500)]
Verify extent back references in btrfsck
Chris Mason [Thu, 13 Dec 2007 16:12:45 +0000 (11:12 -0500)]
Reorder extent back refs to differentiate file data from btree blocks
Chris Mason [Wed, 12 Dec 2007 19:39:46 +0000 (14:39 -0500)]
Create macros to generation set/get funcs for on disk structures
Chris Mason [Wed, 12 Dec 2007 19:39:36 +0000 (14:39 -0500)]
Add back pointers from the inode to the directory that referenced it
Jan Engelhardt [Tue, 11 Dec 2007 14:22:42 +0000 (09:22 -0500)]
Makefile: CFLAGS, LDFLAGS
Split CFLAGS into CFLAGS (user part) and AM_CFLAGS (not-so-user part;
variable name taken from automake, but otherwise no relation).
Also add LDFLAGS.
This allows me to use `make CFLAGS="-O2 -fPIE" LDFLAGS="-pie"` without
dropping the other important (AM_CFLAGS) flags.
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
---
btrfs-progs/Makefile | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
Chris Mason [Tue, 11 Dec 2007 14:21:42 +0000 (09:21 -0500)]
Add back pointers from extents to the file or btree referencing them
Chris Mason [Sun, 9 Dec 2007 18:46:24 +0000 (13:46 -0500)]
Add generation numbers to block pointers