
BTRFS
=====

Btrfs is a copy on write filesystem for Linux aimed at
implementing advanced features while focusing on fault tolerance,
repair and easy administration. Initially developed by Oracle, Btrfs
is licensed under the GPL and open for contribution from anyone.

Linux has a wealth of filesystems to choose from, but we are facing a
number of challenges with scaling to the large storage subsystems that
are becoming common in today's data centers. Filesystems need to scale
in their ability to address and manage large storage, and also in
their ability to detect, repair and tolerate errors in the data stored
on disk.  Btrfs is under heavy development, and is not suitable for
any uses other than benchmarking and review. The Btrfs disk format is
not yet finalized.

The main Btrfs features include:

    * Extent based file storage (2^64 max file size)
    * Space efficient packing of small files
    * Space efficient indexed directories
    * Dynamic inode allocation
    * Writable snapshots
    * Subvolumes (separate internal filesystem roots)
    * Object level mirroring and striping
    * Checksums on data and metadata (multiple algorithms available)
    * Compression
    * Integrated multiple device support, with several raid algorithms
    * Online filesystem check (not yet implemented)
    * Very fast offline filesystem check
    * Efficient incremental backup and FS mirroring (not yet implemented)
    * Online filesystem defragmentation


Mount Options
=============

When mounting a btrfs filesystem, the following option are accepted.
Unless otherwise specified, all options default to off.

  alloc_start=<bytes>
	Debugging option to force all block allocations above a certain
	byte threshold on each block device.  The value is specified in
	bytes, optionally with a K, M, or G suffix, case insensitive.
	Default is 1MB.

  autodefrag
	Detect small random writes into files and queue them up for the
	defrag process.  Works best for small files; Not well suited for
	large database workloads.

  check_int
  check_int_data
  check_int_print_mask=<value>
	These debugging options control the behavior of the integrity checking
	module (the BTRFS_FS_CHECK_INTEGRITY config option required).

	check_int enables the integrity checker module, which examines all
	block write requests to ensure on-disk consistency, at a large
	memory and CPU cost.  

	check_int_data includes extent data in the integrity checks, and
	implies the check_int option.

	check_int_print_mask takes a bitmask of BTRFSIC_PRINT_MASK_* values
	as defined in fs/btrfs/check-integrity.c, to control the integrity
	checker module behavior.

	See comments at the top of fs/btrfs/check-integrity.c for more info.

  compress
  compress=<type>
  compress-force
  compress-force=<type>
	Control BTRFS file data compression.  Type may be specified as "zlib"
	"lzo" or "no" (for no compression, used for remounting).  If no type
	is specified, zlib is used.  If compress-force is specified,
	all files will be compressed, whether or not they compress well.
	If compression is enabled, nodatacow and nodatasum are disabled.

  degraded
	Allow mounts to continue with missing devices.  A read-write mount may
	fail with too many devices missing, for example if a stripe member
	is completely missing.

  device=<devicepath>
	Specify a device during mount so that ioctls on the control device
	can be avoided.  Especially useful when trying to mount a multi-device
	setup as root.  May be specified multiple times for multiple devices.

  discard
	Issue frequent commands to let the block device reclaim space freed by
	the filesystem.  This is useful for SSD devices, thinly provisioned
	LUNs and virtual machine images, but may have a significant
	performance impact.  (The fstrim command is also available to
	initiate batch trims from userspace).

  enospc_debug
	Debugging option to be more verbose in some ENOSPC conditions.

  fatal_errors=<action>
	Action to take when encountering a fatal error: 
	  "bug" - BUG() on a fatal error.  This is the default.
	  "panic" - panic() on a fatal error.

  flushoncommit
	The 'flushoncommit' mount option forces any data dirtied by a write in a
	prior transaction to commit as part of the current commit.  This makes
	the committed state a fully consistent view of the file system from the
	application's perspective (i.e., it includes all completed file system
	operations).  This was previously the behavior only when a snapshot is
	created.

  inode_cache
	Enable free inode number caching.   Defaults to off due to an overflow
	problem when the free space crcs don't fit inside a single page.

  max_inline=<bytes>
	Specify the maximum amount of space, in bytes, that can be inlined in
	a metadata B-tree leaf.  The value is specified in bytes, optionally 
	with a K, M, or G suffix, case insensitive.  In practice, this value
	is limited by the root sector size, with some space unavailable due
	to leaf headers.  For a 4k sectorsize, max inline data is ~3900 bytes.

  metadata_ratio=<value>
	Specify that 1 metadata chunk should be allocated after every <value>
	data chunks.  Off by default.

  noacl
	Disable support for Posix Access Control Lists (ACLs).  See the
	acl(5) manual page for more information about ACLs.

  nobarrier
        Disables the use of block layer write barriers.  Write barriers ensure
	that certain IOs make it through the device cache and are on persistent
	storage.  If used on a device with a volatile (non-battery-backed)
	write-back cache, this option will lead to filesystem corruption on a
	system crash or power loss.

  nodatacow
	Disable data copy-on-write for newly created files.  Implies nodatasum,
	and disables all compression.

  nodatasum
	Disable data checksumming for newly created files.

  notreelog
	Disable the tree logging used for fsync and O_SYNC writes.

  recovery
	Enable autorecovery attempts if a bad tree root is found at mount time.
	Currently this scans a list of several previous tree roots and tries to 
	use the first readable.

 skip_balance
	Skip automatic resume of interrupted balance operation after mount.
	May be resumed with "btrfs balance resume."

  space_cache (*)
	Enable the on-disk freespace cache.
  nospace_cache
	Disable freespace cache loading without clearing the cache.
  clear_cache
	Force clearing and rebuilding of the disk space cache if something
	has gone wrong.

  ssd
  nossd
  ssd_spread
	Options to control ssd allocation schemes.  By default, BTRFS will
	enable or disable ssd allocation heuristics depending on whether a
	rotational or nonrotational disk is in use.  The ssd and nossd options
	can override this autodetection.

	The ssd_spread mount option attempts to allocate into big chunks
	of unused space, and may perform better on low-end ssds.  ssd_spread
	implies ssd, enabling all other ssd heuristics as well.

  subvol=<path>
	Mount subvolume at <path> rather than the root subvolume.  <path> is
	relative to the top level subvolume.

  subvolid=<ID>
	Mount subvolume specified by an ID number rather than the root subvolume.
	This allows mounting of subvolumes which are not in the root of the mounted
	filesystem.
	You can use "btrfs subvolume list" to see subvolume ID numbers.

  subvolrootid=<objectid> (deprecated)
	Mount subvolume specified by <objectid> rather than the root subvolume.
	This allows mounting of subvolumes which are not in the root of the mounted
	filesystem.
	You can use "btrfs subvolume show " to see the object ID for a subvolume.
	
  thread_pool=<number>
	The number of worker threads to allocate.  The default number is equal
	to the number of CPUs + 2, or 8, whichever is smaller.

  user_subvol_rm_allowed
	Allow subvolumes to be deleted by a non-root user. Use with caution. 

MAILING LIST
============

There is a Btrfs mailing list hosted on vger.kernel.org. You can
find details on how to subscribe here:

http://vger.kernel.org/vger-lists.html#linux-btrfs

Mailing list archives are available from gmane:

http://dir.gmane.org/gmane.comp.file-systems.btrfs



IRC
===

Discussion of Btrfs also occurs on the #btrfs channel of the Freenode
IRC network.



	UTILITIES
	=========

Userspace tools for creating and manipulating Btrfs file systems are
available from the git repository at the following location:

 http://git.kernel.org/?p=linux/kernel/git/mason/btrfs-progs.git
 git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git

These include the following tools:

mkfs.btrfs: create a filesystem

btrfsctl: control program to create snapshots and subvolumes:

	mount /dev/sda2 /mnt
	btrfsctl -s new_subvol_name /mnt
	btrfsctl -s snapshot_of_default /mnt/default
	btrfsctl -s snapshot_of_new_subvol /mnt/new_subvol_name
	btrfsctl -s snapshot_of_a_snapshot /mnt/snapshot_of_new_subvol
	ls /mnt
	default snapshot_of_a_snapshot snapshot_of_new_subvol
	new_subvol_name snapshot_of_default

	Snapshots and subvolumes cannot be deleted right now, but you can
	rm -rf all the files and directories inside them.

btrfsck: do a limited check of the FS extent trees.

btrfs-debug-tree: print all of the FS metadata in text form.  Example:

	btrfs-debug-tree /dev/sda2 >& big_output_file
