platform/upstream/btrfs-progs.git
8 years agobtrfs-progs: doc: fix size suffix in mkfs.btrfs
Tsutomu Itoh [Thu, 28 Jan 2016 08:00:33 +0000 (17:00 +0900)]
btrfs-progs: doc: fix size suffix in mkfs.btrfs

There is no petabyte in the explanation of the suffix of
the size parameter. So, it's added.

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: doc: fix typo of some documents
Tsutomu Itoh [Thu, 28 Jan 2016 08:00:24 +0000 (17:00 +0900)]
btrfs-progs: doc: fix typo of some documents

Some typos are corrected.

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix compat_ro mask for free space tree
David Sterba [Mon, 25 Jan 2016 14:35:30 +0000 (15:35 +0100)]
btrfs-progs: fix compat_ro mask for free space tree

The BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE bit is supposed to be in the
COMPAT_RO_SUPP bitmask.

Reported-by: Holger Hoffstätte <holger.hoffstaette@googlemail.com>
Reported-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Makefile.in: Simplify/correct install-static
Mike Gilbert [Thu, 21 Jan 2016 15:59:32 +0000 (10:59 -0500)]
btrfs-progs: Makefile.in: Simplify/correct install-static

install -D does not create the last component, so this failed if
$(DESTDIR)$(bindir) did not already exist.

There's no need for a loop here since install accepts multiple source
arguments.

Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.4
David Sterba [Mon, 18 Jan 2016 12:56:35 +0000 (13:56 +0100)]
Btrfs progs v4.4

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: update balance manual page
David Sterba [Fri, 15 Jan 2016 14:17:46 +0000 (15:17 +0100)]
btrfs-progs: docs: update balance manual page

Make the new balance filters' syntax more explicit. Other rewording and
reformatting.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: debug-tree: tweak tree node checks
David Sterba [Fri, 15 Jan 2016 13:00:41 +0000 (14:00 +0100)]
btrfs-progs: debug-tree: tweak tree node checks

The tree root and chunk root base pointers are verified in open_ctree so
we don't get NULL here. We still check the node pointers to get better
error message.

Resolves-coverity-id: 1348450
Resolves-coverity-id: 1348451
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix static build
Noah Massey [Fri, 15 Jan 2016 12:31:01 +0000 (13:31 +0100)]
btrfs-progs: fix static build

Change in "btrfs-progs: introduce helper for parsing args without
options" added a dependency on help.o that was duplicated for the static
build.

Signed-off-by: Noah Massey <noah.massey@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Use AC_CHECK_TOOL to find AR
Mike Gilbert [Thu, 14 Jan 2016 10:18:03 +0000 (05:18 -0500)]
btrfs-progs: Use AC_CHECK_TOOL to find AR

AC_CHECK_TOOL takes the --host option into account for cross-compiling.

Signed-off-by: Mike Gilbert <floppym@gentoo.org>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs progs v4.4-rc1
David Sterba [Thu, 14 Jan 2016 10:16:27 +0000 (11:16 +0100)]
Btrfs progs v4.4-rc1

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: subvol show: use clean_args_no_options instead of opencoding
David Sterba [Thu, 14 Jan 2016 09:37:02 +0000 (10:37 +0100)]
btrfs-progs: subvol show: use clean_args_no_options instead of opencoding

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: introduce helper for parsing args without options
David Sterba [Thu, 14 Jan 2016 09:30:35 +0000 (10:30 +0100)]
btrfs-progs: introduce helper for parsing args without options

All commands should support the "--" option separator. This is
transparently handled by getopt, but we don't use that everywhere.
Introduce a helper for commands that take no options (just the path).
The object file dependencies need to be adjusted a bit.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: move prefixcmp to utils
David Sterba [Thu, 14 Jan 2016 09:29:13 +0000 (10:29 +0100)]
btrfs-progs: move prefixcmp to utils

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: receive: don't leak open find handle
David Sterba [Thu, 14 Jan 2016 08:40:24 +0000 (09:40 +0100)]
btrfs-progs: receive: don't leak open find handle

Resolves-coverity-id: 1348121
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: also check filesystem type in test_issubvolume
David Sterba [Wed, 13 Jan 2016 17:44:59 +0000 (18:44 +0100)]
btrfs-progs: also check filesystem type in test_issubvolume

A subvolume is a directory with inode number 256 on a btrfs filesytem.
Add the missing check to test_issubvolume for completeness, otherwise we
always do that in btrfs_open_dir.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: more verbose errors from test_issubvolume
David Sterba [Wed, 13 Jan 2016 17:14:32 +0000 (18:14 +0100)]
btrfs-progs: more verbose errors from test_issubvolume

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: let test_issubvolume return the exact error
David Sterba [Wed, 13 Jan 2016 16:45:39 +0000 (17:45 +0100)]
btrfs-progs: let test_issubvolume return the exact error

Return any error from stat, minor cleanups.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: use symbolic name for subvolume inode number in test_issubvolume
David Sterba [Wed, 13 Jan 2016 17:08:34 +0000 (18:08 +0100)]
btrfs-progs: use symbolic name for subvolume inode number in test_issubvolume

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle errors from test_isdir
David Sterba [Wed, 13 Jan 2016 17:04:22 +0000 (18:04 +0100)]
btrfs-progs: handle errors from test_isdir

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: let test_isdir return the exact error
David Sterba [Wed, 13 Jan 2016 16:45:39 +0000 (17:45 +0100)]
btrfs-progs: let test_isdir return the exact error

Return any error from stat, normalize the return value in case the path
is a directory.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: debug-tree: teach -t option about the chunk and root trees
David Sterba [Wed, 13 Jan 2016 15:05:56 +0000 (16:05 +0100)]
btrfs-progs: debug-tree: teach -t option about the chunk and root trees

A user on IRC wanted to dump the chunk tree using the -t option. As the
-t option enumerates only trees pointed by the tree_root, the chunk tree
is skipped. Similar for th tree of tree roots.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: subvol show: handle options by getopt
David Sterba [Wed, 13 Jan 2016 14:38:28 +0000 (15:38 +0100)]
btrfs-progs: subvol show: handle options by getopt

The subvolume show command does not take any optios but at least it
should honor "--", as reported.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110181
Reported-by: <moviuro+kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fi usage: support mixed blockgroups
David Sterba [Wed, 13 Jan 2016 11:59:42 +0000 (12:59 +0100)]
btrfs-progs: fi usage: support mixed blockgroups

Properly account the duplicated block groups and global reserve.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110111
Reported-by: Chris Murphy <bugzilla@colorremedies.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: enhance btrfs-filesystem manual page
David Sterba [Tue, 12 Jan 2016 17:42:49 +0000 (18:42 +0100)]
btrfs-progs: docs: enhance btrfs-filesystem manual page

Wording, formatting, explanations, examples.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add missing prerequisites
David Sterba [Tue, 12 Jan 2016 14:16:11 +0000 (15:16 +0100)]
btrfs-progs: tests: add missing prerequisites

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-porgs: fi usage: rename variable to avoid shadowing
David Sterba [Tue, 12 Jan 2016 13:34:41 +0000 (14:34 +0100)]
btrfs-porgs: fi usage: rename variable to avoid shadowing

Reported by gcc -Wshadow .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-porgs: check: rename variable to avoid shadowing
David Sterba [Tue, 12 Jan 2016 13:34:41 +0000 (14:34 +0100)]
btrfs-porgs: check: rename variable to avoid shadowing

Reported by gcc -Wshadow .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-porgs: qgroup: rename variable to avoid shadowing
David Sterba [Tue, 12 Jan 2016 13:34:41 +0000 (14:34 +0100)]
btrfs-porgs: qgroup: rename variable to avoid shadowing

Reported by gcc -Wshadow .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add function attributes for the printf-like
David Sterba [Tue, 12 Jan 2016 13:25:23 +0000 (14:25 +0100)]
btrfs-progs: add function attributes for the printf-like

Reported by gcc -Wsuggest-attribute=format .

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: build: fix builds with extra warnings, W=1
David Sterba [Tue, 12 Jan 2016 13:18:24 +0000 (14:18 +0100)]
btrfs-progs: build: fix builds with extra warnings, W=1

Wrong variable name used in the main makefile.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check for negative return value from ioctl
David Sterba [Tue, 12 Jan 2016 12:35:50 +0000 (13:35 +0100)]
btrfs-progs: check for negative return value from ioctl

Handle only negative values returned by ioctl syscalls, with exception
of the device remove. It returns positive values that are handled later.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: remove unnecessary errno temp variables
David Sterba [Tue, 12 Jan 2016 10:20:18 +0000 (11:20 +0100)]
btrfs-progs: remove unnecessary errno temp variables

We can read errno directly if it's not clobbered by any intermediate
calls.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: free-space-tree: minor message adjustments
David Sterba [Mon, 11 Jan 2016 15:44:44 +0000 (16:44 +0100)]
btrfs-progs: free-space-tree: minor message adjustments

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfsprogs: corrupt-blocks: include limits.h to define PATH_MAX
Khem Raj [Sun, 10 Jan 2016 03:04:23 +0000 (19:04 -0800)]
btrfsprogs: corrupt-blocks: include limits.h to define PATH_MAX

limits.h is needed for PATH_MAX definition

Fixes
| btrfs-corrupt-block.c: In function 'corrupt_dir_item':
| btrfs-corrupt-block.c:478:12: error: 'PATH_MAX' undeclared (first use in this function)
|   char name[PATH_MAX];

Signed-off-by: Khem Raj <raj.khem@gmail.com>
[ minor changelog edits ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: document new mount option fragment
David Sterba [Mon, 11 Jan 2016 15:28:14 +0000 (16:28 +0100)]
btrfs-progs: docs: document new mount option fragment

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: sort mount options alphabetically
David Sterba [Mon, 11 Jan 2016 15:12:28 +0000 (16:12 +0100)]
btrfs-progs: docs: sort mount options alphabetically

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check the free space tree in btrfsck
Omar Sandoval [Wed, 30 Sep 2015 03:51:45 +0000 (20:51 -0700)]
btrfs-progs: check the free space tree in btrfsck

This reuses the existing code for checking the free space cache, we just
need to load the free space tree. While we do that, we check a couple of
invariants on the free space tree itself. This requires pulling in some
code from the kernel to exclude the super stripes.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add basic awareness of the free space tree
Omar Sandoval [Wed, 30 Sep 2015 03:51:44 +0000 (20:51 -0700)]
btrfs-progs: add basic awareness of the free space tree

To start, let's tell btrfs-progs to read the free space root and how to
print the on-disk format of the free space tree. However, we're not
adding the FREE_SPACE_TREE read-only compat bit to the set of supported
bits because progs doesn't know how to keep the free space tree
consistent.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs: rename btrfs-mount to btrfs-man5
David Sterba [Mon, 11 Jan 2016 14:32:38 +0000 (15:32 +0100)]
btrfs-progs: docs: rename btrfs-mount to btrfs-man5

The page does will not contain only mount options but other stuff.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs, btrfs-mount: enhance file attributes section
David Sterba [Mon, 11 Jan 2016 14:28:08 +0000 (15:28 +0100)]
btrfs-progs: docs, btrfs-mount: enhance file attributes section

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cleanup, move usage help strings closer to the command callbacks
David Sterba [Mon, 11 Jan 2016 13:31:20 +0000 (14:31 +0100)]
btrfs-progs: cleanup, move usage help strings closer to the command callbacks

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd property: use correct usage strings
David Sterba [Mon, 11 Jan 2016 14:35:07 +0000 (15:35 +0100)]
btrfs-progs: cmd property: use correct usage strings

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd fi usage: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd fi usage: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd filesystem: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd filesystem: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd replace: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd replace: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd subvolume: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd subvolume: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd send: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd send: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd receive: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd receive: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd qgroup: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd qgroup: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd property: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd property: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd balance: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd balance: switch to common error message wrapper

Message texts were adjusted.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd quota: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd quota: switch to common error message wrapper

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cmd rescue: switch to common error message wrapper
David Sterba [Mon, 11 Jan 2016 10:01:47 +0000 (11:01 +0100)]
btrfs-progs: cmd rescue: switch to common error message wrapper

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: catch memory allocation failure in btrfs_split_item
David Sterba [Wed, 6 Jan 2016 14:52:11 +0000 (15:52 +0100)]
btrfs-progs: catch memory allocation failure in btrfs_split_item

Do the dumb BUG_ON now, the function needs more changes to handle all
errors.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handler memory allocation failure in add_extent_rec
David Sterba [Wed, 6 Jan 2016 14:52:11 +0000 (15:52 +0100)]
btrfs-progs: handler memory allocation failure in add_extent_rec

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: catch memory allocation failure from alloc_data_backref
David Sterba [Wed, 6 Jan 2016 14:52:11 +0000 (15:52 +0100)]
btrfs-progs: catch memory allocation failure from alloc_data_backref

Do the dumb BUG_ON now, the function needs more changes to handle all
errors.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: catch memory allocation failure from alloc_tree_backref
David Sterba [Wed, 6 Jan 2016 14:52:11 +0000 (15:52 +0100)]
btrfs-progs: catch memory allocation failure from alloc_tree_backref

Do the dumb BUG_ON now, the function needs more changes to handle all
errors.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: catch memory allocation failure in splice_shared_node
David Sterba [Wed, 6 Jan 2016 14:52:11 +0000 (15:52 +0100)]
btrfs-progs: catch memory allocation failure in splice_shared_node

Do the dumb BUG_ON now, the function needs more changes to handle all
errors.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle errors in get_inode_backref and fail in the caller
David Sterba [Wed, 6 Jan 2016 14:08:46 +0000 (15:08 +0100)]
btrfs-progs: handle errors in get_inode_backref and fail in the caller

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle errors in get_root_backref and fail in the caller
David Sterba [Wed, 6 Jan 2016 14:37:06 +0000 (15:37 +0100)]
btrfs-progs: handle errors in get_root_backref and fail in the caller

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: return errors from get_root_rec, fail in callers
David Sterba [Wed, 6 Jan 2016 14:08:46 +0000 (15:08 +0100)]
btrfs-progs: return errors from get_root_rec, fail in callers

get_root_rec return value is enahanced, callers will just BUG_ON now
and will be fixed one by one.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle errors in add_shared_node and fail in the caller
David Sterba [Wed, 6 Jan 2016 14:37:06 +0000 (15:37 +0100)]
btrfs-progs: handle errors in add_shared_node and fail in the caller

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: return errors from clone_inode_rec, fail in callers
David Sterba [Wed, 6 Jan 2016 14:08:46 +0000 (15:08 +0100)]
btrfs-progs: return errors from clone_inode_rec, fail in callers

clone_inode_rec return value is enahanced, callers will just BUG_ON now
and will be fixed one by one.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: return errors from get_inode_rec, fail in callers
David Sterba [Wed, 6 Jan 2016 14:08:46 +0000 (15:08 +0100)]
btrfs-progs: return errors from get_inode_rec, fail in callers

get_inode_rec return value is enahanced, callers will just BUG_ON now
and will be fixed one by one.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs, enhance the mount option manual page
David Sterba [Fri, 8 Jan 2016 18:33:02 +0000 (19:33 +0100)]
btrfs-progs: docs, enhance the mount option manual page

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs, btrfs-mount: enhance fatal_erros
David Sterba [Fri, 8 Jan 2016 13:46:44 +0000 (14:46 +0100)]
btrfs-progs: docs, btrfs-mount: enhance fatal_erros

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs, btrfs-mount: put NOTE tag to new paragraph
David Sterba [Fri, 8 Jan 2016 13:34:48 +0000 (14:34 +0100)]
btrfs-progs: docs, btrfs-mount: put NOTE tag to new paragraph

Otherwise it's not rendered properly.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: docs, btrfs-mount: unindent descriptions
David Sterba [Fri, 8 Jan 2016 13:31:05 +0000 (14:31 +0100)]
btrfs-progs: docs, btrfs-mount: unindent descriptions

Asciidoc ignores special keywords like WARNING or NOTE if they're not at
the beginning of the line and they're not renedered very visibly in the
end.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: document snapshot unaware defrag
Christoph Anton Mitterer [Sun, 27 Dec 2015 02:41:28 +0000 (03:41 +0100)]
btrfs-progs: document snapshot unaware defrag

In btrfs-filesystem(8), improved the documentation of snapshot unaware
defragmentation and included the exact kernel version numbers being affected as
well as the possible effects.
No longer use the word "unlink" which is easily understood as "deleting a file".
Moved the warning more to the beginning of "defragment" subcommand's
documentation where it's more visible to readers.

Added the same warning to the "autodefrag" option of btrfs-mount(5).

Signed-off-by: Christoph Anton Mitterer <mail@christoph.anton.mitterer.name>
8 years agobtrfs-progs: docs, update btrfs(8) manual page
David Sterba [Thu, 7 Jan 2016 15:28:05 +0000 (16:28 +0100)]
btrfs-progs: docs, update btrfs(8) manual page

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agoBtrfs-progs: fix typo in parse_range
Liu Bo [Wed, 6 Jan 2016 21:08:53 +0000 (13:08 -0800)]
Btrfs-progs: fix typo in parse_range

s/*end/*start.

This makes 'btrfs balance start -dvrange=xxx..yyy' really work.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: use on-stack buffer in add_symbolic_link
David Sterba [Wed, 6 Jan 2016 13:22:34 +0000 (14:22 +0100)]
btrfs-progs: use on-stack buffer in add_symbolic_link

Also get rid of the unhandled memory allocation.

Resolves-coverity-id: 1338298
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs: only free root_path if it was allocated from the heap
Neil Horman [Thu, 3 Dec 2015 18:45:44 +0000 (13:45 -0500)]
btrfs: only free root_path if it was allocated from the heap

Noticed this while doing some snapshots in a chroot environment

btrfs receive can set root_path to either realmnt, which is passed in from the
command line, or to a heap allocated via find_mount_root  in do_receive.  We
should only free the later, not the former, as the former results in an invalid
pointer warning from glibc during free.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Josef Bacik <jbacik@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix using on-disk structure to store in memory data
Byongho Lee [Mon, 4 Jan 2016 01:01:34 +0000 (10:01 +0900)]
btrfs-progs: fix using on-disk structure to store in memory data

In 'qgroup_count' structure 'diskinfo' and 'info' are used to store only
in memory data but its types are for on-disk structure as a result sparse
warns it (different base types).  So fix it by adding new structure
'qgroup_info' to store in memory data and replace on-disk structure
'btrfs_qgroup_info_item' by 'qgroup_info'.  In addition in alloc_cnt()
'generation' is set but not used after that so remove the relevant code.

Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix endian bug in update_super()
Byongho Lee [Mon, 4 Jan 2016 01:01:33 +0000 (10:01 +0900)]
btrfs-progs: fix endian bug in update_super()

In update_super() 'chunk->stripe.devid' and 'super->dev_item.devid' both
are little endian. So we should not use endian helper
btrfs_set_stack_stripe_devid().

Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: fix endian bugs in chunk rebuilding
Byongho Lee [Mon, 4 Jan 2016 01:01:32 +0000 (10:01 +0900)]
btrfs-progs: fix endian bugs in chunk rebuilding

This is a same patch as Zach Brown's but we lost so I resend it based on
current code.
 - 'commit 2cd95f945a61 ("fix endian bugs in chunk rebuilding")'

Signed-off-by: Zach Brown <zab@redhat.com>
Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: make private symbols to static
Byongho Lee [Mon, 4 Jan 2016 01:01:31 +0000 (10:01 +0900)]
btrfs-progs: make private symbols to static

Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: use NULL instead of 0
Byongho Lee [Mon, 4 Jan 2016 01:01:30 +0000 (10:01 +0900)]
btrfs-progs: use NULL instead of 0

Fix the code assigning 0 to pointer instead of NULL.

Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: get sparse checking working
Byongho Lee [Mon, 4 Jan 2016 01:01:29 +0000 (10:01 +0900)]
btrfs-progs: get sparse checking working

When I run sparse checking it gives the following error:

 $ make C=1 V=1
 gcc -MM -MG -MF cmds-fi-usage.o.d -MT cmds-fi-usage.o -MT \
 cmds-fi-usage.static.o -MT cmds-fi-usage.o.d -g -O1 -Wall \
 -D_FORTIFY_SOURCE=2 -include config.h -DBTRFS_FLAT_INCLUDES \
 -D_XOPEN_SOURCE=700 -fno-strict-aliasing -fPIC   cmds-fi-usage.c
    [SP]     ctree.c
 sparse -g -O1 -Wall -D_FORTIFY_SOURCE=2 -include config.h \
 -DBTRFS_FLAT_INCLUDES -D_XOPEN_SOURCE=700 -fno-strict-aliasing -fPIC \
 -include  -D__CHECKER__ -D__CHECK_ENDIAN__ -Wbitwise -Wuninitialized \
 -Wshadow -Wundef -U_FORTIFY_SOURCE ctree.c
 builtin:1:15: error: unable to open '-D__CHECKER__'
 Makefile:177: recipe for target 'ctree.o' failed
 make: *** [ctree.o] Error 1

It means '$(check_defs)' is passed to sparse as NULL and looks
'$(check_defs)'should be assigned before assigning '$(CHECKER_FLAGS)'.
BTW, I'm not familiar with make tool so there could be some my
misunderstanding and better solution.

Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Enhance chunk validation check
Qu Wenruo [Tue, 15 Dec 2015 02:04:01 +0000 (10:04 +0800)]
btrfs-progs: Enhance chunk validation check

Enhance chunk validation:
1) Num_stripes
   We already have such check but it's only in super block sys chunk
   array.
   Now check all on-disk chunks.

2) Chunk logical
   It should be aligned to sector size.
   This behavior should be *DOUBLE CHECKED* for 64K sector size like
   PPC64 or AArch64.
   Maybe we can found some hidden bugs.

3) Chunk length
   Same as chunk logical, should be aligned to sector size.

4) Stripe length
   It should be power of 2.

5) Chunk type
   Any bit out of TYPE_MAS | PROFILE_MASK is invalid.

With all these much restrict rules, several fuzzed image reported in
mail list should no longer cause btrfsck error.

Reported-by: Vegard Nossum <vegard.nossum@oracle.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: ftw_add_entry_size: Round up file size to sectorsize
Chandan Rajendra [Tue, 15 Dec 2015 10:02:00 +0000 (15:32 +0530)]
btrfs-progs: ftw_add_entry_size: Round up file size to sectorsize

ftw_add_entry_size() assumes 4k as the block size of the underlying
filesystem and hence the file sizes computed is incorrect for non-4k
sectorsized filesystems. Fix this by rounding up file sizes to
sectorsize.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: balance: enhance the usage filter with range
David Sterba [Thu, 22 Oct 2015 08:26:10 +0000 (10:26 +0200)]
btrfs-progs: balance: enhance the usage filter with range

We can do more with the balance usage filter. Enhance it so we can
specify also the minimum usage of the block groups to process. The
'usage' filter now accepts a range (a..b, can be partial) and needs
kernel support.

The 'usage=value' filter is equivalent to 'limit=..value' but works on
older kernels as well.

The min/max values are 32bit, unlike the single-value limit which is
64bit.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: extend balance args to take min/max usage filter
David Sterba [Thu, 22 Oct 2015 08:19:38 +0000 (10:19 +0200)]
btrfs-progs: extend balance args to take min/max usage filter

Add the overlapping usage and [usage_min, usage_max] members to the
balance args. The min/max values are interpreted iff the corresponding
flag BTRFS_BALANCE_ARGS_USAGE_RANGE is set.

The minimum boundary is inclusive, maximum is exclusive:
* usage_min <= chunk_usage < usage_max

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: balance: add stripes filter
Gabríel Arthúr Pétursson [Mon, 28 Sep 2015 22:33:04 +0000 (22:33 +0000)]
btrfs-progs: balance: add stripes filter

Add new balance filter 'stripes=<range>' to process only chunks that are
spread accross given number of chunks.

The range minimum and maximum are inclusive.

Signed-off-by: Gabríel Arthúr Pétursson <gabriel@system.is>
[ reworked a bit to use the range helpers, dropped the single value
  for stripes ]
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: balance: enhance the limit fiter with range
David Sterba [Sun, 11 Oct 2015 22:52:43 +0000 (00:52 +0200)]
btrfs-progs: balance: enhance the limit fiter with range

We can do more with the balance filter. Enhance it so we can specify
also the minimum number of block groups to process. The 'limit' filter
now accepts a range (a..b, can be partial) and needs kernel support.

The 'limit=value' filter is equivalent to 'limit=..value' but works on
older kernels as well.

The min/max values are 32bit, unlike the single-value limit which is
64bit.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: extend balance args to take min/max limit filter
David Sterba [Sun, 11 Oct 2015 22:34:58 +0000 (00:34 +0200)]
btrfs-progs: extend balance args to take min/max limit filter

Add the overlapping limit and [limit_min, limit_max] members to the
balance args. The min/max values are interpreted iff the corresponding
flag BTRFS_BALANCE_ARGS_LIMIT_RANGE is set.

The minimum and maximum are inclusive.

Note that the values are only 32bit, but this should be enough for the
foreseeable future.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: test multiple-linked file corruption
Naohiro Aota [Tue, 8 Dec 2015 02:07:13 +0000 (11:07 +0900)]
btrfs-progs: tests: test multiple-linked file corruption

This commit extends the leaf corruption test to try to repair a file
linked from multiple directory. It stresses a case that some links to a
file is broken but others kept valid.

Signed-off-by: Naohiro Aota <naota@elisp.net>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: Introduce new members for btrfs_convert_context
Qu Wenruo [Tue, 1 Dec 2015 07:11:23 +0000 (15:11 +0800)]
btrfs-progs: Introduce new members for btrfs_convert_context

Introduce 3 new members for btrfs_convert_context:

1) struct cache_tree used
Records accurate byte ranges which are used by old filesystem.
This will be used to create old filesystem image.

2) struct cache_tree data_chunks
Records batched ranges which must be covered by data chunks.
The bytenr range is optimized to meet all the chunk requirement.

3) u64 total_bytenr
Records how large the filesystem is in bytenr.
Yes, we can calculate it easy, but that's for old blocks based
filesystem.
This will make it more friendly for extent based filesystem.
And later cctx->block_counts and may be removed

And 2 for mkfs_config:
1) char *chunk_uuid.
Used as temporary chunk_uuid (unparsed) string for later
make_convert_btrfs()

2) u64 super_bytenr
Records the new temporary super bytenr after make_btrfs().

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: extent-tree: Add add_merge_cache_extent function
Qu Wenruo [Tue, 1 Dec 2015 07:11:22 +0000 (15:11 +0800)]
btrfs-progs: extent-tree: Add add_merge_cache_extent function

This add_merge_cache_extent() function will try to merge adjusted
cache_extent.

This is used for later btrfs-convert ext2 free space cache.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: extent-cache: Add comments for search/lookup functions
Qu Wenruo [Tue, 1 Dec 2015 07:11:21 +0000 (15:11 +0800)]
btrfs-progs: extent-cache: Add comments for search/lookup functions

There are quite a lot search/lookup functions with different behavior,
add comments for them, as it will take extra time to view source to
understand the behavior difference.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: check, properly reset nlink of multi-linked file
Naohiro Aota [Fri, 4 Dec 2015 05:37:26 +0000 (14:37 +0900)]
btrfs-progs: check, properly reset nlink of multi-linked file

If a file is linked from more than one directory and only one
of the links is corrupted, btrfs check dose not reset the nlink
properly. Actually it can go into infinite loop to link the broken file
into lost+found.

This patch fix two part of the code. The first one delay the freeing
valid (no error, found inode ref, directory index, and directory
item) backrefs. Freeing valid backrefs earier prevent reset_nlink() to
add back all valid links.

The second fix is obvious: passing `ref_type' to btrfs_add_link() is just
wrong. It should be `filetype' instead. The current code can break all valid
file links.

Signed-off-by: Naohiro Aota <naota@elisp.net>
Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: print test type
David Sterba [Mon, 30 Nov 2015 17:13:01 +0000 (18:13 +0100)]
btrfs-progs: tests: print test type

Makes it a bit more clear:

    [TEST/conv]   ext4 32k nodesize, btrfs no-holes
    [TEST/conv]   ext2 64k nodesize, btrfs no-holes
    [TEST/conv]   ext3 64k nodesize, btrfs no-holes
    [TEST/conv]   ext4 64k nodesize, btrfs no-holes
    [TEST]        misc-tests.sh
    [TEST/misc]   001-btrfstune-features
    [TEST/misc]   002-uuid-rewrite
    [TEST/misc]   003-zero-log
    [TEST/misc]   004-shrink-fs
    [TEST/misc]   005-convert-progress-thread-crash
    [TEST/misc]   006-image-on-missing-device
    [TEST/misc]   007-subvolume-sync
    [TEST/misc]   008-leaf-crossing-stripes
    [TEST/misc]   009-subvolume-sync-must-wait
    [TEST/misc]   010-convert-delete-ext2-subvol
    [TEST/misc]   011-delete-missing-device
    [TEST]        fuzz-tests.sh
    [TEST/fuzz]   001-simple-unmounted

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: show-super: copy implementation of btrfs_read_sys_array
David Sterba [Mon, 30 Nov 2015 16:56:58 +0000 (17:56 +0100)]
btrfs-progs: show-super: copy implementation of btrfs_read_sys_array

btrfs-show-super has own implementation to read the sys array and it
lacks all the sanity checks.

Copy and adapt the improved implementation from btrfs_read_sys_array.
This will fix crashes on a fuzzed/corrupted images. It's duplicating
code but at the moment looks easier than refactoring and restructuring
btrfs_read_sys_array that now almost matches the kernel code, which we
want in the long term.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: add sys-array-num-stripes-0.raw.xz
David Sterba [Mon, 30 Nov 2015 16:42:15 +0000 (17:42 +0100)]
btrfs-progs: tests: add sys-array-num-stripes-0.raw.xz

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: verbose error when we find an unexpected item in sys_array
David Sterba [Mon, 30 Nov 2015 16:10:20 +0000 (17:10 +0100)]
btrfs-progs: verbose error when we find an unexpected item in sys_array

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: handle invalid num_stripes in sys_array
David Sterba [Mon, 30 Nov 2015 15:44:29 +0000 (16:44 +0100)]
btrfs-progs: handle invalid num_stripes in sys_array

We can handle the special case of num_stripes == 0 directly inside
btrfs_read_sys_array. The BUG_ON in btrfs_chunk_item_size is there to
catch other unhandled cases where we fail to validate external data,
like in btrfs-show-super.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: add more checks to btrfs_read_sys_array
David Sterba [Wed, 5 Nov 2014 14:24:51 +0000 (15:24 +0100)]
btrfs-progs: add more checks to btrfs_read_sys_array

Port of kernel commit e3540eab29e1b2260bc4b9b3979a49a00e3e3af8

Verify that the sys_array has enough bytes to read the next item.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: cleanup, rename a few variables in btrfs_read_sys_array
David Sterba [Mon, 30 Nov 2015 15:07:35 +0000 (16:07 +0100)]
btrfs-progs: cleanup, rename a few variables in btrfs_read_sys_array

Port of kernel commit 1ffb22cf8c322bbfea6b35fe23d025841b49fede

There's a pointer to buffer, integer offset and offset passed as
pointer, try to find matching names for them.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: update btrfs_read_sys_array to match kernel implementation
David Sterba [Mon, 30 Nov 2015 14:57:36 +0000 (15:57 +0100)]
btrfs-progs: update btrfs_read_sys_array to match kernel implementation

There are some sanity checks missing on both sides, kernel/userspace.
Preparation to port the missing changes.

Sync code with parent of kernel commit
1ffb22cf8c322bbfea6b35fe23d025841b49fede ("btrfs: cleanup, rename a few
variables in btrfs_read_sys_array")

This effectively reverts progs commit
be96777126d283773e4397278a5662d90676ab88 ("btrfs-progs: Cleanup unneeded
extra variant in btrfs_read_sys_array") so we can apply more of the
kernel patches.

Signed-off-by: David Sterba <dsterba@suse.com>
8 years agobtrfs-progs: tests: mkfs, check sectorsize and nodesize combinations
Qu Wenruo [Mon, 30 Nov 2015 01:39:30 +0000 (09:39 +0800)]
btrfs-progs: tests: mkfs, check sectorsize and nodesize combinations

Add mkfs selftest for invalid and valid sectorsize/nodesize
combinations.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ switched to TEST_DEV ]
Signed-off-by: David Sterba <dsterba@suse.com>