Development of userspace BTRFS tools
Find a file
Chandan Rajendra c11e36a29e Btrfs-progs: Do not force mixed block group creation unless '-M' option is specified
When creating small Btrfs filesystem instances (i.e. filesystem size <= 1GiB),
mkfs.btrfs fails if both sectorsize and nodesize are specified on the command
line and sectorsize != nodesize, since mixed block groups involves both data
and metadata blocks sharing the same block group. This is an incorrect behavior
when '-M' option isn't specified on the command line.

This commit makes optional the creation of mixed block groups i.e. Mixed block
groups are created only when -M option is specified on the command line.

Since we now allow small filesystem instances with sectorsize != nodesize to
be created, we can end up in the following situation,

[root@localhost ~]# mkfs.btrfs -f -n 65536 /dev/loop0
btrfs-progs v3.19-rc2-405-g976307c
See http://btrfs.wiki.kernel.org for more information.

Performing full device TRIM (512.00MiB) ...
Label:              (null)
UUID:               49fab72e-0c8b-466b-a3ca-d1bfe56475f0
Node size:          65536
Sector size:        4096
Filesystem size:    512.00MiB
Block group profiles:
  Data:             single            8.00MiB
  Metadata:         DUP              40.00MiB
  System:           DUP              12.00MiB
SSD detected:       no
Incompat features:  extref, skinny-metadata
Number of devices:  1
Devices:
   ID        SIZE  PATH
    1   512.00MiB  /dev/loop0
[root@localhost ~]# mount /dev/loop0 /mnt/
mount: mount /dev/loop0 on /mnt failed: No space left on device

The ENOSPC occurs during the creation of the UUID tree. This is because of
things like large metadata block size, DUP mode used for metadata and global
reservation consuming space. Also, large nodesize does not make sense on small
filesystems, hence this should not be an issue.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2015-11-02 09:35:04 +01:00
Documentation Btrfs-progs: Do not force mixed block group creation unless '-M' option is specified 2015-11-02 09:35:04 +01:00
tests btrfs-progs: tests: print commands on terminal if requested 2015-10-21 14:29:26 +02:00
.gitignore btrfs-progs: docs: add html build target 2015-11-02 09:35:00 +01:00
Android.mk btrfs-progs: Add Android build mk file 2015-09-01 14:02:49 +02:00
androidcompat.h btrfs-progs: add compat header for android 2015-09-01 14:02:49 +02:00
autogen.sh btrfs-progs: autogen: add check for pkg-config 2015-09-07 11:09:17 +02:00
backref.c btrfs-progs: read_tree_block() and read_node_slot() cleanup. 2015-02-02 19:21:24 +01:00
backref.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
bcp Btrfs-progs: Correct path munging in bcp 2011-10-25 09:18:58 -04:00
bitops.h btrfs-progs: compat: define DIV_ROUND_UP if not already defined 2015-06-05 23:29:59 +02:00
btrfs-calc-size.c btrfs-progs: cleanup, update function definitions to be ANSI conformant 2015-09-14 23:46:19 +02:00
btrfs-completion btrfs-progs: inspect: add command min-dev-size 2015-08-31 19:25:08 +02:00
btrfs-convert.c btrfs-progs: convert: Print different error message if convert partly failed. 2015-10-07 12:13:26 +02:00
btrfs-corrupt-block.c btrfs-progs: cleanup, mark more functions static 2015-09-14 23:45:53 +02:00
btrfs-crc.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-debug-tree.c btrfs-progs: accept --help as option in the standalone utilities 2015-06-11 00:23:30 +02:00
btrfs-debugfs btrfs-progs: Add simple python front end to the search ioctl 2014-12-04 17:03:49 +01:00
btrfs-find-root.c btrfs-progs: find-root: Output matched root when searching all roots 2015-08-31 19:25:13 +02:00
btrfs-fragments.c btrfs-progs: fragments: use btrfs_open_dir for btrfs-fragments command 2015-11-02 09:35:02 +01:00
btrfs-image.c btrfs-progs: use calloc instead of malloc+memset 2015-10-21 14:29:26 +02:00
btrfs-list.c btrfs-progs: use calloc instead of malloc+memset 2015-10-21 14:29:26 +02:00
btrfs-list.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
btrfs-map-logical.c btrfs-progs: fix memory leak in btrfs-map-logical main() 2015-08-31 19:25:14 +02:00
btrfs-select-super.c btrfs-progs: autoconf: use standard PACKAGE_* macros 2015-01-28 18:00:58 +01:00
btrfs-show-super.c btrfs-progs: show-super: print human readable text for super flags 2015-05-14 15:41:07 +02:00
btrfs-zero-log.c btrfs-progs: cleanup and deprecate btrfs-zero-log 2015-06-05 18:02:08 +02:00
btrfs.c btrfs-progs: print compact help for btrfs 2015-06-09 14:27:54 +02:00
btrfsck.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
btrfstune.c btrfs-progs: btrfstune: remove unnecessary fsid checks 2015-09-02 19:07:51 +02:00
chunk-recover.c btrfs-progs: fix memory leak on error path 2015-11-02 09:35:02 +01:00
cmds-balance.c btrfs-progs: add helpers to print ranges 2015-11-02 09:35:04 +01:00
cmds-check.c btrfs-progs: remove identical branch in record_extent() 2015-11-02 09:35:02 +01:00
cmds-device.c Btrfs-progs: Do not force mixed block group creation unless '-M' option is specified 2015-11-02 09:35:04 +01:00
cmds-fi-usage.c btrfs-progs: filesystem: use btrfs_open_dir for btrfs filesystem command 2015-11-02 09:35:00 +01:00
cmds-fi-usage.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
cmds-filesystem.c btrfs-progs: filesystem: use btrfs_open_dir for btrfs filesystem command 2015-11-02 09:35:00 +01:00
cmds-inspect.c btrfs-progs: inspect: use btrfs_open_dir for btrfs inspect command 2015-11-02 09:35:01 +01:00
cmds-property.c btrfs-progs: prop: use macro terminator for command list 2015-08-31 19:25:09 +02:00
cmds-qgroup.c btrfs-progs: fix memory leak in cmd_qgroup_show() 2015-11-02 09:35:03 +01:00
cmds-quota.c btrfs-progs: quota: use btrfs_open_dir for btrfs quota command 2015-11-02 09:35:01 +01:00
cmds-receive.c btrfs-progs: use android compat header 2015-09-01 14:02:49 +02:00
cmds-replace.c Btrfs-progs: Do not force mixed block group creation unless '-M' option is specified 2015-11-02 09:35:04 +01:00
cmds-rescue.c btrfs-progs: cleanup, mark more functions static 2015-09-14 23:45:53 +02:00
cmds-restore.c btrfs-progs: restore: fix off-by-one len check 2015-10-16 19:37:44 +02:00
cmds-scrub.c btrfs-progs: use btrfs_open_dir in open_path_or_dev_mnt 2015-11-02 09:35:01 +01:00
cmds-send.c btrfs-progs: add newline to some error messages 2015-08-31 19:25:13 +02:00
cmds-subvolume.c btrfs-progs: subvolume: use btrfs_open_dir for btrfs subvolume command 2015-11-02 09:35:00 +01:00
commands.h btrfs-progs: alias btrfs device delete to btrfs device remove 2015-06-26 16:33:39 +02:00
configure.ac btrfs-progs: configure: fix typo in summary 2015-06-22 01:13:48 +02:00
COPYING fix COPYING 2007-06-12 15:41:08 -04:00
crc32c.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
crc32c.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
ctree.c btrfs-progs: fix leak of "path" in btrfs_find_item() error paths 2015-11-02 09:35:02 +01:00
ctree.h btrfs-progs: Avoid uninitialized data in output of btrfs-convert 2015-09-09 17:43:05 +02:00
dir-item.c btrfs-progs: cleanup, mark more functions static 2015-09-14 23:45:53 +02:00
dir-test.c Btrfs-progs: fix magic return value in dir-test.c 2013-10-16 08:20:42 -04:00
disk-io.c btrfs-progs: use calloc instead of malloc+memset 2015-10-21 14:29:26 +02:00
disk-io.h btrfs-progs: export read_extent_data function 2015-06-17 16:08:35 +02:00
extent-cache.c btrfs-progs: Add last_cache_extent() for extent-cache. 2014-12-10 11:54:10 +01:00
extent-cache.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
extent-tree.c btrfs-progs: return -ENOMEM properly in btrfs_read_block_groups() 2015-11-02 09:35:03 +01:00
extent_io.c btrfs-progs: use calloc instead of malloc+memset 2015-10-21 14:29:26 +02:00
extent_io.h btrfs-progs: Move (set/clear_)extent_buffer_uptodate() to extent_io.h. 2015-02-27 17:44:11 +01:00
file-item.c btrfs-progs: remove btrfs_release_path before btrfs_free_path 2014-09-14 19:06:12 +02:00
file.c btrfs-progs: Add btrfs_get_extent() and btrfs_punch_hole(). 2015-02-02 14:16:38 +01:00
find-root.c btrfs-progs: find-root: fix a bug that will cause wrong result 2015-08-31 19:25:13 +02:00
find-root.h btrfs-progs: Add new find-root.[ch] infrastructure 2015-02-11 18:34:04 +01:00
free-space-cache.c btrfs-progs: add newline to some error messages 2015-08-31 19:25:13 +02:00
free-space-cache.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
fsck.btrfs btrfs-progs: fsck.btrfs: Fix bashism and bad getopts processing 2015-05-21 16:53:44 +02:00
hash.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
hasher.c Unaligned access fixes 2008-02-15 11:19:58 -05:00
help.c btrfs-progs: no extra newline between aliased commands in help text 2015-06-26 16:44:29 +02:00
inode-item.c btrfs-progs: fix overflow check in btrfs_insert_inode_ref 2014-12-30 15:48:55 +01:00
inode-map.c btrfs-progs: remove btrfs_release_path before btrfs_free_path 2014-09-14 19:06:12 +02:00
inode.c btrfs-progs: handle orphan creation error in btrfs_unlink 2015-01-06 18:46:03 +01:00
INSTALL btrfs-progs: INSTALL: enhance build instructions 2015-09-07 11:46:32 +02:00
ioctl-test.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
ioctl.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
kerncompat.h btrfs-progs: compilation errors when using musl libc 2015-08-31 19:25:11 +02:00
library-test.c btrfs-progs: build, add basic build test for library 2014-11-07 17:52:57 +01:00
list.h Btrfs-progs: introduce list_{first, next}_entry/list_splice_tail{_init} 2013-07-03 14:06:55 -04:00
list_sort.c btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
list_sort.h btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
Makefile.extrawarn btrfs-progs: build: allow to build with various compiler warnings 2015-10-21 14:29:26 +02:00
Makefile.in btrfs-progs: build: make support for static checkers more generic 2015-10-21 14:29:26 +02:00
mkfs.c Btrfs-progs: Do not force mixed block group creation unless '-M' option is specified 2015-11-02 09:35:04 +01:00
print-tree.c btrfs-progs: print root item's last_snapshot value 2015-11-02 09:35:00 +01:00
print-tree.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
props.c btrfs-progs: Introduce change_header_uuid function 2015-05-14 15:41:07 +02:00
props.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
qgroup-verify.c btrfs-progs: read_tree_block() and read_node_slot() cleanup. 2015-02-02 19:21:24 +01:00
qgroup-verify.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
qgroup.c btrfs-progs: fix memory leak in cmd_qgroup_show() 2015-11-02 09:35:03 +01:00
qgroup.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
quick-test.c btrfs-progs: use calloc instead of malloc+memset 2015-10-21 14:29:26 +02:00
radix-tree.c btrfs-progs: Remove a unused function root_gtp_mask(). 2014-12-19 15:04:56 +01:00
radix-tree.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
raid6.c btrfs-progs: give raid6.c its exported prototypes 2013-09-03 19:41:11 +02:00
random-test.c Btrfs-progs: fix magic return value in random-test.c 2013-10-16 08:20:42 -04:00
rbtree-utils.c Btrfs-progs: break out rbtree util functions 2014-10-14 10:39:39 +02:00
rbtree-utils.h btrfs-progs: libbtrfs, make exported headers compatible with C++ 2014-11-03 23:50:50 +01:00
rbtree.c Btrfs-progs: update rbtree libs 2014-10-14 10:39:40 +02:00
rbtree.h btrfs-progs: libbtrfs, make exported headers compatible with C++ 2014-11-03 23:50:50 +01:00
rbtree_augmented.h btrfs-progs: libbtrfs, make exported headers compatible with C++ 2014-11-03 23:50:50 +01:00
repair.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
repair.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
root-tree.c Btrfs-progs: free path if we don't find root item 2014-03-21 06:23:32 -07:00
send-stream.c btrfs-progs: fix compiler warning 2014-11-07 18:14:38 +01:00
send-stream.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
send-test.c btrfs-progs: drop feature defines from C files, in favour of CFLAGS defines 2015-01-27 14:45:59 +01:00
send-utils.c btrfs-progs: drop argument from attribute deprecated 2015-06-30 15:05:07 +02:00
send-utils.h btrfs-progs: drop argument from attribute deprecated 2015-06-30 15:05:07 +02:00
send.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
show-blocks Fix showblocks to display different colors for different metadata roots 2009-03-09 13:00:44 -04:00
string-table.c btrfs-progs: Add helpers functions to handle the printing of data in tabular format 2014-12-04 16:48:09 +01:00
string-table.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
super-recover.c Btrfs-progs: skip opening all devices with restore 2015-02-09 14:53:15 -05:00
task-utils.c btrfs-progs: tasks info->id is a pthread_t and should not set to -1 2015-10-02 17:56:08 +02:00
task-utils.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
transaction.h btrfs-progs: add missing includes to header files 2015-06-10 02:52:21 +02:00
ulist.c btrfs-progs: import ulist 2014-08-22 14:39:33 +02:00
ulist.h btrfs-progs: unify header file inclusion protections 2015-01-21 17:49:26 +01:00
utils-lib.c btrfs-progs: drop feature defines from C files, in favour of CFLAGS defines 2015-01-27 14:45:59 +01:00
utils.c Btrfs-progs: Do not force mixed block group creation unless '-M' option is specified 2015-11-02 09:35:04 +01:00
utils.h Btrfs-progs: Do not force mixed block group creation unless '-M' option is specified 2015-11-02 09:35:04 +01:00
uuid-tree.c btrfs-progs: fix in-place byte swapping 2013-09-03 19:41:06 +02:00
version.h.in btrfs-progs: re-introduce BTRFS_BUILD_VERSION in version.h 2015-03-16 18:40:06 +01:00
version.sh Btrfs progs v4.2.3 2015-10-19 11:29:01 +02:00
volumes.c btrfs-progs: use calloc instead of malloc+memset 2015-10-21 14:29:26 +02:00
volumes.h btrfs-progs: fix cross stripe boundary check 2015-09-11 16:46:14 +02:00