platform/upstream/btrfs-progs.git
16 years agoBtrfs: update converter for the new disk format
Yan Zheng [Wed, 17 Dec 2008 21:10:07 +0000 (16:10 -0500)]
Btrfs: update converter for the new disk format

This patch updates the ext3 to btrfs converter for the new
disk format. This mainly involves changing the convert's
data relocation and free space management code. This patch
also ports some functions from kernel module to btrfs-progs.
Thank you,

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
16 years agoBtrfs: Add inode sequence number for NFS and reserved space in a few structs
Chris Mason [Mon, 8 Dec 2008 22:01:14 +0000 (17:01 -0500)]
Btrfs: Add inode sequence number for NFS and reserved space in a few structs

This adds a sequence number to the btrfs inode that is increased on
every update.  NFS will be able to use that to detect when an inode has
changed, without relying on inaccurate time fields.

While we're here, this also:

Puts reserved space into the super block and inode

Adds a log root transid to the super so we can pick the newest super
based on the fsync log as well as the main transaction ID.  For now
the log root transid is always zero, but that'll get fixed.

Adds a starting offset to the dev_item.  This will let us do better
alignment calculations if we know the start of a partition on the disk.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agosuperblock duplication
Yan Zheng [Fri, 5 Dec 2008 17:21:31 +0000 (12:21 -0500)]
superblock duplication

This patch updates btrfs-progs for superblock duplication.
Note: I didn't make this patch as complete as the one for
kernel since updating the converter requires changing the
code again. Thank you,

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
16 years agoBtrfs: move data checksumming into a dedicated tree
Chris Mason [Mon, 8 Dec 2008 22:00:31 +0000 (17:00 -0500)]
Btrfs: move data checksumming into a dedicated tree

Btrfs stores checksums for each data block.  Until now, they have
been stored in the subvolume trees, indexed by the inode that is
referencing the data block.  This means that when we read the inode,
we've probably read in at least some checksums as well.

But, this has a few problems:

* The checksums are indexed by logical offset in the file.  When
compression is on, this means we have to do the expensive checksumming
on the uncompressed data.  It would be faster if we could checksum
the compressed data instead.

* If we implement encryption, we'll be checksumming the plain text and
storing that on disk.  This is significantly less secure.

* For either compression or encryption, we have to get the plain text
back before we can verify the checksum as correct.  This makes the raid
layer balancing and extent moving much more expensive.

* It makes the front end caching code more complex, as we have touch
the subvolume and inodes as we cache extents.

* There is potentitally one copy of the checksum in each subvolume
referencing an extent.

The solution used here is to store the extent checksums in a dedicated
tree.  This allows us to index the checksums by phyiscal extent
start and length.  It means:

* The checksum is against the data stored on disk, after any compression
or encryption is done.

* The checksum is stored in a central location, and can be verified without
following back references, or reading inodes.

This makes compression significantly faster by reducing the amount of
data that needs to be checksummed.  It will also allow much faster
raid management code in general.

The checksums are indexed by a key with a fixed objectid (a magic value
in ctree.h) and offset set to the starting byte of the extent.  This
allows us to copy the checksum items into the fsync log tree directly (or
any other tree), without having to invent a second format for them.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agoRev the disk format for the compat code and the csum selection
Chris Mason [Tue, 2 Dec 2008 15:20:36 +0000 (10:20 -0500)]
Rev the disk format for the compat code and the csum selection

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agobtrfs-progs: support for different csum algorithims
Josef Bacik [Tue, 2 Dec 2008 14:58:23 +0000 (09:58 -0500)]
btrfs-progs: support for different csum algorithims

This is the btrfs-progs version of the patch to add the ability to have
different csum algorithims.  Note I didn't change the image maker since it
seemed a bit more complicated than just changing some stuff around so I will let
Yan take care of that.

Everything else was converted and for now a mkfs just
sets the type to be BTRFS_CSUM_TYPE_CRC32.

Signed-off-by: Josef Bacik <jbacik@redhat.com>
16 years agobtrfs-progs: add support for compat flags
Josef Bacik [Tue, 2 Dec 2008 12:18:36 +0000 (07:18 -0500)]
btrfs-progs: add support for compat flags

This patch updates btrfs-progs with the disk format changes for the
compatability flags.

Signed-off-by: Josef Bacik <jbacik@redhat.com>
16 years agoFix image tool compile warnings
yanhai zhu [Tue, 2 Dec 2008 12:19:08 +0000 (07:19 -0500)]
Fix image tool compile warnings

16 years agoBtrfs image tool
Yan Zheng [Thu, 20 Nov 2008 14:52:48 +0000 (09:52 -0500)]
Btrfs image tool

This patch adds btrfs image tool. The image tool is
a debugging tool that creates/restores btrfs metadump
image.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
16 years agoUpdate the super magic string to match the seed and root format changes
Chris Mason [Tue, 18 Nov 2008 19:13:44 +0000 (14:13 -0500)]
Update the super magic string to match the seed and root format changes

16 years agoAdd disk format requirements for subvol backward and forward refs
Chris Mason [Tue, 18 Nov 2008 15:34:08 +0000 (10:34 -0500)]
Add disk format requirements for subvol backward and forward refs

16 years agoModify the subvol and snapshot creation ioctls to work anywhere in the tree
Chris Mason [Tue, 18 Nov 2008 16:26:35 +0000 (11:26 -0500)]
Modify the subvol and snapshot creation ioctls to work anywhere in the tree

This changes the snapshot and subvol ioctl API and command lines so
that new snapshots and subvols can be created anywhere.

Subvolume creation hasn't changed much:

btrfsctl -S subvol_name directory

This creates a new subvolume under 'directory'

Snapshot creation looks the same, but is actually different:

btrfsctl -s full_path_to_new_snapshot file_or_dir

For example: btrfsctl -s /mnt/new_snap /mnt/subvol

Will create a new snapshot named new_snap under /mnt of the root
found in /mnt/subvol.  It always snapshots the entire root regardless of
which file or directory inside the root you give it.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agoupdate btrfs-progs for seed device support
Yan Zheng [Tue, 18 Nov 2008 15:40:06 +0000 (10:40 -0500)]
update btrfs-progs for seed device support

This patch does the following:

1) Update device management code to match the kernel code.

2) Allocator fixes.

3) Add a program called btrfstune to set/clear the SEEDING
   super block flags.

16 years agoAdd fallocate support v2
Yan Zheng [Fri, 31 Oct 2008 16:48:02 +0000 (12:48 -0400)]
Add fallocate support v2

This patch updates btrfs-progs for fallocate support.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
16 years agoAvoid tree of tree root cow when committing a clean FS
Chris Mason [Thu, 30 Oct 2008 15:11:39 +0000 (11:11 -0400)]
Avoid tree of tree root cow when committing a clean FS

The root node generation number code made commit_tree_root look like the
kernel code.  It forces a cow of the tree of tree roots even when
the FS hasn't changed.

This causes errors during fsck and other readonly operations.  This adds
a check to see if commit_tree_root is going to trigger writes to the
tree of tree roots, and bails if none are pending.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agoRev the disk format for compression and root pointer generation fields
Chris Mason [Wed, 29 Oct 2008 18:09:40 +0000 (14:09 -0400)]
Rev the disk format for compression and root pointer generation fields

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agoAdd root tree pointer transaction ids
Yan Zheng [Wed, 29 Oct 2008 18:07:47 +0000 (14:07 -0400)]
Add root tree pointer transaction ids

This patch adds transaction IDs to root tree pointers.
Transaction IDs in tree pointers are compared with the
generation numbers in block headers when reading root
blocks of trees. This can detect some types of IO errors.

Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
16 years agoAdd disk format elements for compression
Chris Mason [Wed, 29 Oct 2008 18:37:41 +0000 (14:37 -0400)]
Add disk format elements for compression

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agoRev the disk format for the new back reference format
Chris Mason [Thu, 9 Oct 2008 17:40:23 +0000 (13:40 -0400)]
Rev the disk format for the new back reference format

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agoCount space allocated to file in bytes
Yan Zheng [Thu, 9 Oct 2008 15:55:26 +0000 (11:55 -0400)]
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>
16 years agoRemove offset field from struct btrfs_extent_ref
Yan Zheng [Thu, 9 Oct 2008 15:55:30 +0000 (11:55 -0400)]
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>
16 years agoupdate mkfs.btrfs for the new space balancing code
Zheng Yan [Fri, 26 Sep 2008 14:26:53 +0000 (10:26 -0400)]
update mkfs.btrfs for the new space balancing code

The new space balancing code needs a subvol to store the
temporary inode for data extent relocation.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
16 years agoFull back reference support
Zheng Yan [Tue, 23 Sep 2008 16:29:10 +0000 (12:29 -0400)]
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.

16 years agoDisk format changes required for write ahead tree log
Chris Mason [Fri, 5 Sep 2008 20:15:58 +0000 (16:15 -0400)]
Disk format changes required for write ahead tree log

16 years agoRev the disk format
Chris Mason [Thu, 21 Aug 2008 19:49:34 +0000 (15:49 -0400)]
Rev the disk format

16 years agoSwitch btrfs_name_hash() to crc32c
David Woodhouse [Thu, 21 Aug 2008 00:11:23 +0000 (20:11 -0400)]
Switch btrfs_name_hash() to crc32c

Date: Tue, 19 Aug 2008 19:21:22 +0100
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
16 years agoUse git for version number too
David Woodhouse [Thu, 21 Aug 2008 00:11:22 +0000 (20:11 -0400)]
Use git for version number too

Date: Tue, 19 Aug 2008 18:57:17 +0100
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
16 years agofix btrfs-progs version script
Eric Sandeen [Wed, 6 Aug 2008 16:17:01 +0000 (12:17 -0400)]
fix btrfs-progs version script

btrfs-progs-0.16.tar.bz2 seems to be distributed w/o an .hg,
which make the version.sh script go bonk.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---

16 years agoAdded tag v0.16 for changeset 2b26e4f8c71e
Chris Mason [Mon, 4 Aug 2008 19:46:36 +0000 (15:46 -0400)]
Added tag v0.16 for changeset 2b26e4f8c71e

16 years agoUpdate version.sh to v0.16
Chris Mason [Mon, 4 Aug 2008 19:46:31 +0000 (15:46 -0400)]
Update version.sh to v0.16

16 years agobtrfs-convert: Iterate correctly using libext2fs functions
Radoslaw Szkodzinski [Wed, 30 Jul 2008 21:02:57 +0000 (17:02 -0400)]
btrfs-convert: Iterate correctly using libext2fs functions

This patch corrects open-coded inode_map iteration, which happens to be
illegal in new libext2fs due to inode_map being private, causing warning,
which becomes a compile error.

16 years agoCleanup btrfsctl help message
email.ahmedkamal@googlemail.com [Wed, 30 Jul 2008 17:29:28 +0000 (13:29 -0400)]
Cleanup btrfsctl help message

Many options were not mentioned in the usage message, fix that and
cleaning up the brackets

Signed-Off-By: Ahmed Kamal <email.ahmedkamal@googlemail.com>
16 years agoFix: btrfsctl arguments handling
Ahmed [Wed, 30 Jul 2008 13:17:21 +0000 (09:17 -0400)]
Fix: btrfsctl arguments handling

btrfsctl -A
in the current -unstable branch, does not result in the error message
designated for it, namely "-A requires an arg\n"

16 years agobtrfs-convert new dir index support
Yan [Wed, 30 Jul 2008 13:16:42 +0000 (09:16 -0400)]
btrfs-convert new dir index support

This patch updates btrfs-convert for the new dir index format.

16 years agobtrfs-progs: add orphan support to print-tree
Josef Bacik [Wed, 30 Jul 2008 13:15:02 +0000 (09:15 -0400)]
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

16 years agoRev the disk format
Chris Mason [Thu, 24 Jul 2008 17:52:04 +0000 (13:52 -0400)]
Rev the disk format

16 years agobtrfs-progs new dir index support
Josef Bacik [Thu, 24 Jul 2008 16:13:32 +0000 (12:13 -0400)]
btrfs-progs new dir index support

16 years agoPrint the version string in a few programs
Chris Mason [Thu, 24 Jul 2008 16:13:30 +0000 (12:13 -0400)]
Print the version string in a few programs

16 years agoAdd version strings
Chris Mason [Wed, 23 Jul 2008 16:12:13 +0000 (12:12 -0400)]
Add version strings

16 years agoAdd .hgignore file to ignore verison.h
Chris Mason [Wed, 23 Jul 2008 15:36:13 +0000 (11:36 -0400)]
Add .hgignore file to ignore verison.h

16 years agoAdd sync and transaction ioctl defs
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.

16 years agobtrfsctl: print usage when called with bad args
Linda Knippers [Tue, 10 Jun 2008 02:23:13 +0000 (22:23 -0400)]
btrfsctl: print usage when called with bad args

16 years agoAdded tag v0.15 for changeset e6571e2ce0c8
Chris Mason [Thu, 29 May 2008 14:32:09 +0000 (10:32 -0400)]
Added tag v0.15 for changeset e6571e2ce0c8

16 years agoVerify parent generation number on btree reads
Chris Mason [Tue, 13 May 2008 17:48:58 +0000 (13:48 -0400)]
Verify parent generation number on btree reads

16 years agoPass down the expected generation number when reading tree blocks
Chris Mason [Mon, 12 May 2008 17:51:24 +0000 (13:51 -0400)]
Pass down the expected generation number when reading tree blocks

16 years agoFix the pretty print code for num_bytes == 0
Chris Mason [Mon, 12 May 2008 17:01:57 +0000 (13:01 -0400)]
Fix the pretty print code for num_bytes == 0

16 years agoAdd a readonly flag open_ctree to force RO opens
Chris Mason [Mon, 5 May 2008 13:45:26 +0000 (09:45 -0400)]
Add a readonly flag open_ctree to force RO opens

16 years agobcp updates for single file copies
Chris Mason [Fri, 2 May 2008 20:12:02 +0000 (16:12 -0400)]
bcp updates for single file copies

16 years agoAdd bcp to test the clone file ioctl
Chris Mason [Fri, 2 May 2008 19:08:08 +0000 (15:08 -0400)]
Add bcp to test the clone file ioctl

16 years agoFix compiler warning in volumes.c
Chris Mason [Fri, 2 May 2008 19:05:11 +0000 (15:05 -0400)]
Fix compiler warning in volumes.c

16 years agoAdd the clone ioctl number
Chris Mason [Fri, 2 May 2008 15:05:21 +0000 (11:05 -0400)]
Add the clone ioctl number

16 years agoFix uninitialized variables, and use -O so gcc starts checking for them
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)

16 years agoAdded tag v0.14 for changeset 969099968b60
Chris Mason [Tue, 29 Apr 2008 18:29:18 +0000 (14:29 -0400)]
Added tag v0.14 for changeset 969099968b60

16 years agoFix btrfs-convert's large file support.
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.

16 years agoAdd btrfs-vol command to balance, add and (eventually) remove devices
Chris Mason [Mon, 28 Apr 2008 20:44:22 +0000 (16:44 -0400)]
Add btrfs-vol command to balance, add and (eventually) remove devices

16 years agoAdd mkfs.btrfs -A offset to control allocation start on 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.

16 years agoSpeed improvement and bug fixes for ext3 converter
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.

16 years agoFix balance_level to free the middle block if there is room in the left one
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.

16 years agoDon't empty the middle buffer in push_nodes_for_insert
Chris Mason [Thu, 24 Apr 2008 14:54:32 +0000 (10:54 -0400)]
Don't empty the middle buffer in push_nodes_for_insert

16 years agoKeep more pointers free in the nodes for double splits
Chris Mason [Thu, 24 Apr 2008 14:18:25 +0000 (10:18 -0400)]
Keep more pointers free in the nodes for double splits

16 years agoDrop quick-test from the list of programs built by default
Chris Mason [Tue, 22 Apr 2008 18:30:52 +0000 (14:30 -0400)]
Drop quick-test from the list of programs built by default

16 years agoUpdate the Ext3 converter
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
---

16 years agoAdd a command to show all of the btrfs filesystems on the box (btrfs-show)
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)

16 years agoFix chunk allocation when some devices don't have enough room for the stripe
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

16 years agoAdd checks to avoid adding the same device twice during mkfs
Chris Mason [Fri, 18 Apr 2008 14:45:17 +0000 (10:45 -0400)]
Add checks to avoid adding the same device twice during mkfs

16 years agoUse better chunk sizes for small and large filesystems
Chris Mason [Fri, 18 Apr 2008 14:31:42 +0000 (10:31 -0400)]
Use better chunk sizes for small and large filesystems

16 years agoAdd support for filesystem labels via mkfs.btrfs -L
Chris Mason [Fri, 18 Apr 2008 14:31:42 +0000 (10:31 -0400)]
Add support for filesystem labels via mkfs.btrfs -L

16 years agoUse device uuids when scanning devices
Chris Mason [Fri, 18 Apr 2008 14:31:42 +0000 (10:31 -0400)]
Use device uuids when scanning devices

16 years agoAdd raid10 support
Chris Mason [Wed, 16 Apr 2008 15:14:21 +0000 (11:14 -0400)]
Add raid10 support

16 years agoAdd chunk uuids and update multi-device back references
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.

16 years agoFix up the quick btree code test program
Chris Mason [Tue, 15 Apr 2008 15:32:17 +0000 (11:32 -0400)]
Fix up the quick btree code test program

16 years agoFix a few casts for 32 bit compile
Chris Mason [Fri, 11 Apr 2008 16:18:46 +0000 (12:18 -0400)]
Fix a few casts for 32 bit compile

16 years agoWrite all super blocks during commit
Chris Mason [Thu, 10 Apr 2008 20:22:00 +0000 (16:22 -0400)]
Write all super blocks during commit

16 years agoRetry metadata reads in the face of checksum failures
Chris Mason [Wed, 9 Apr 2008 20:28:12 +0000 (16:28 -0400)]
Retry metadata reads in the face of checksum failures

16 years agoChange btrfs_map_block to return a structure with mappings for all stripes
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

16 years agoDon't allow written blocks from this transaction to be reallocated
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.

16 years agoUse leafsize and nodesize == pagesize for now
Chris Mason [Wed, 9 Apr 2008 23:49:01 +0000 (19:49 -0400)]
Use leafsize and nodesize == pagesize for now

16 years agoRecow all roots at the end of mkfs
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.

16 years agoAdd mkfs options for data and metadata mirroring modes
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

16 years agoAdd support for single single duplication of metadata
Chris Mason [Thu, 3 Apr 2008 20:35:48 +0000 (16:35 -0400)]
Add support for single single duplication of metadata

16 years agoAdd mirroring support across multiple drives
Chris Mason [Thu, 3 Apr 2008 20:35:48 +0000 (16:35 -0400)]
Add mirroring support across multiple drives

16 years agoUse getopt_long and introduce long mkfs options. -s now means --sectorsize
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

16 years agobtrfs-progs: Fix printf format casting errors
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>
16 years agobtrfs-progs: Stop stomping on 'name' input parameter
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>
16 years agocheck if partition is mounted before mkfs
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>
16 years agoUpdate struct btrfs_header flags, and use it to indicate buffers are written
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

16 years agoImplement raid0 when multiple devices are present
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

16 years agoWalk all block devices looking for btrfs
Chris Mason [Mon, 24 Mar 2008 19:05:44 +0000 (15:05 -0400)]
Walk all block devices looking for btrfs

16 years agoioctls to scan for btrfs filesystems
Chris Mason [Mon, 24 Mar 2008 19:04:49 +0000 (15:04 -0400)]
ioctls to scan for btrfs filesystems

16 years agoBtrfsck updates for multi-device filesystems
Chris Mason [Mon, 24 Mar 2008 19:04:37 +0000 (15:04 -0400)]
Btrfsck updates for multi-device filesystems

16 years agoDynamic chunk allocation
Chris Mason [Mon, 24 Mar 2008 19:03:58 +0000 (15:03 -0400)]
Dynamic chunk allocation

16 years agoAdd support for multiple devices per filesystem
Chris Mason [Mon, 24 Mar 2008 19:03:18 +0000 (15:03 -0400)]
Add support for multiple devices per filesystem

16 years agoRemove extent back refs in batches, and avoid duplicate searches
Chris Mason [Tue, 4 Mar 2008 18:07:22 +0000 (13:07 -0500)]
Remove extent back refs in batches, and avoid duplicate searches

16 years agoAdd debugging for block group update failure
Chris Mason [Mon, 4 Feb 2008 15:10:13 +0000 (10:10 -0500)]
Add debugging for block group update failure

16 years agoCall btrfs_cow_block while lowering tree level.
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.

16 years agoInsert extent record and the first backref in a single balance
Chris Mason [Tue, 4 Mar 2008 16:35:36 +0000 (11:35 -0500)]
Insert extent record and the first backref in a single balance

16 years agoCopy correct tree when inserting into slot 0
Chris Mason [Wed, 30 Jan 2008 16:43:54 +0000 (11:43 -0500)]
Copy correct tree when inserting into slot 0

16 years agoAdd inode item and backref in one insert, reducing cpu usage
Chris Mason [Tue, 29 Jan 2008 20:15:18 +0000 (15:15 -0500)]
Add inode item and backref in one insert, reducing cpu usage

16 years agoDuring deletes and truncate, remove many items at once from the tree
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

16 years agoAdd some extra debugging around file data checksum failures
Chris Mason [Tue, 4 Mar 2008 16:23:32 +0000 (11:23 -0500)]
Add some extra debugging around file data checksum failures