The common usecase is to enable features that were not enabled at mkfs time. Please make sure that you have kernel support for the features. You can find a complete list of features and kernel version of their introduction at https://btrfs.wiki.kernel.org/index.php/Changelog#By_feature . Also, the manual page mkfs.btrfs(8) contains more details about the features.
Some of the features could be also enabled on a mounted filesystem by other means. Please refer to the FILESYSTEM FEATURES in btrfs(5).
change fsid stored as metadata_uuid to a randomly generated UUID, see also -U
change fsid stored as metadata_uuid to a given UUID, see also -U
The metadata_uuid is stored only in the superblock and is a backward incompatible change. The fsid in metadata blocks remains unchanged and is not overwritten, thus the whole operation is significantly faster than -U.
The new metadata_uuid can be used for mount by UUID and is also used to identify devices of a multi-device filesystem.
Enable no-holes feature (more efficient representation of file holes), enabled by mkfs feature no-holes.
Enable extended inode refs (hardlink limit per file in a directory is 65536), enabled by mkfs feature extref.
A seeding filesystem is forced to be mounted read-only. A new device can be added to the filesystem and will capture all writes keeping the seeding device intact. See also section SEEDING DEVICE in btrfs(5).
Clearing the seeding flag on a device may be dangerous. If a previously-seeding device is changed, all filesystems that used that device will become unmountable. Setting the seeding flag back will not fix that.
A valid usecase is seeding device as a base image. Clear the seeding flag, update the filesystem and make it seeding again, provided that it’s OK to throw away all filesystems built on top of the previous base.
The UUID should be a 36 bytes string in printf(3) format "%08x-%04x-%04x-%04x-%012x". If there is a previous unfinished fsid change, it will continue only if the UUID matches the unfinished one or if you use the option -u.
All metadata blocks are rewritten, this may take some time, but the final filesystem compatibility is unaffected, unlike -M.
Cancelling or interrupting a UUID change operation will make the filesystem temporarily unmountable. To fix it, rerun btrfstune -u and let it complete.
Enable skinny metadata extent refs (more efficient representation of extents), enabled by mkfs feature skinny-metadata.
All newly created extents will use the new representation. To completely switch the entire filesystem, run a full balance of the metadata. Please refer to btrfs-balance(8).