platform/upstream/btrfs-progs.git
7 years agobtrfs-progs: move fs features declarations to own header from utils
David Sterba [Thu, 26 Jan 2017 12:13:36 +0000 (13:13 +0100)]
btrfs-progs: move fs features declarations to own header from utils

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: convert: move common api implementation to own file
David Sterba [Wed, 25 Jan 2017 16:21:02 +0000 (17:21 +0100)]
btrfs-progs: convert: move common api implementation to own file

Lots of moved code but no actual changes.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: mkfs: move common api implementation to own file
David Sterba [Wed, 25 Jan 2017 16:21:02 +0000 (17:21 +0100)]
btrfs-progs: mkfs: move common api implementation to own file

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: move convert definitions to own header
David Sterba [Wed, 25 Jan 2017 16:09:10 +0000 (17:09 +0100)]
btrfs-progs: move convert definitions to own header

Create a header for filesystem conversion API, the config and the main
entry function.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: move mkfs definitions to own header
David Sterba [Wed, 25 Jan 2017 15:54:35 +0000 (16:54 +0100)]
btrfs-progs: move mkfs definitions to own header

Create a header for filesystem creation API, the config and the main
entry function.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: move some common definitions to own header
David Sterba [Wed, 25 Jan 2017 15:54:35 +0000 (16:54 +0100)]
btrfs-progs: move some common definitions to own header

Start a header for various defines that are supposed to be used in any
context or subpart.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: move help implemetnation to own file
David Sterba [Wed, 25 Jan 2017 15:35:00 +0000 (16:35 +0100)]
btrfs-progs: move help implemetnation to own file

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: move help defines to own header
David Sterba [Wed, 25 Jan 2017 15:35:00 +0000 (16:35 +0100)]
btrfs-progs: move help defines to own header

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: find-root: rename usage helper
David Sterba [Wed, 25 Jan 2017 15:23:24 +0000 (16:23 +0100)]
btrfs-progs: find-root: rename usage helper

This would clash with the generic usage from commands.h.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Introduce macro to calculate backup superblock offset
Qu Wenruo [Tue, 24 Jan 2017 03:03:06 +0000 (11:03 +0800)]
btrfs-progs: Introduce macro to calculate backup superblock offset

Introduce a new macro, BTRFS_SB_OFFSET() to calculate backup superblock
offset, this is handy if one wants to initialize static array at
declaration time.

Suggested-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Introduce kernel sizes to cleanup large intermediate number
Qu Wenruo [Tue, 24 Jan 2017 03:03:05 +0000 (11:03 +0800)]
btrfs-progs: Introduce kernel sizes to cleanup large intermediate number

Large numbers like (1024 * 1024 * 1024) may cost reader/reviewer to
waste one second to convert to 1G.

Introduce kernel include/linux/sizes.h to replace any intermediate
number larger than 4096 (not including 4096) to SZ_*.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: introduce global config
David Sterba [Mon, 21 Nov 2016 12:52:01 +0000 (13:52 +0100)]
btrfs-progs: introduce global config

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agoBtrfs progs v4.9.1
David Sterba [Fri, 27 Jan 2017 14:15:59 +0000 (15:15 +0100)]
Btrfs progs v4.9.1

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: update CHANGES for v4.9.1
David Sterba [Wed, 25 Jan 2017 09:14:32 +0000 (10:14 +0100)]
btrfs-progs: update CHANGES for v4.9.1

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: mkfs/convert: separate the convert part from make_btrfs
David Sterba [Tue, 24 Jan 2017 18:36:15 +0000 (19:36 +0100)]
btrfs-progs: mkfs/convert: separate the convert part from make_btrfs

The regulare mkfs_btrfs does not anything special about convert and just
passes the arguments. Make that two functions.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: tests: use built binaries for 004-send-parent-multi-subvol
David Sterba [Tue, 24 Jan 2017 17:19:27 +0000 (18:19 +0100)]
btrfs-progs: tests: use built binaries for 004-send-parent-multi-subvol

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: tests: add variable quotation to cli-tests
David Sterba [Tue, 24 Jan 2017 16:59:47 +0000 (17:59 +0100)]
btrfs-progs: tests: add variable quotation to cli-tests

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: tests: add test for --sync option of qgroup show
Tsutomu Itoh [Thu, 15 Dec 2016 04:33:05 +0000 (13:33 +0900)]
btrfs-progs: tests: add test for --sync option of qgroup show

Simple test script for the following patch.

   btrfs-progs: qgroup: add sync option to 'qgroup show'

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: qgroup show: do not error if sync fails
David Sterba [Tue, 24 Jan 2017 16:46:10 +0000 (17:46 +0100)]
btrfs-progs: qgroup show: do not error if sync fails

The sync call is unlikely to fail so we optimistically turn it to a
warning if that happens so we return inaccurate numbers instead of a
hard exit.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: qgroup: change the value of sort option
Tsutomu Itoh [Thu, 15 Dec 2016 04:30:55 +0000 (13:30 +0900)]
btrfs-progs: qgroup: change the value of sort option

The value of sort option ('S') is not used for option letter.
Therefore, I'll change the single letter to non-character.

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: qgroup: add sync option to 'qgroup show'
Tsutomu Itoh [Thu, 15 Dec 2016 04:29:28 +0000 (13:29 +0900)]
btrfs-progs: qgroup: add sync option to 'qgroup show'

The 'qgroup show' command does not synchronize filesystem.
Therefore, 'qgroup show' may not display the correct value unless
synchronized with 'filesystem sync' command etc.

So add the '--sync' option so that we can choose whether or not
to synchronize when executing the command.

Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: kerncompat: simplify warning_trace
David Sterba [Tue, 24 Jan 2017 15:05:24 +0000 (16:05 +0100)]
btrfs-progs: kerncompat: simplify warning_trace

The value of assertion is always set.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: kerncompat: disconnect assert and warning messages
David Sterba [Tue, 24 Jan 2017 15:02:44 +0000 (16:02 +0100)]
btrfs-progs: kerncompat: disconnect assert and warning messages

The assertion and warn/bug have reversed condition checks, using the
same helpers drops the exact value, so we'll print the message directly
without the helpers.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: kerncompat: pass exact condition value from ASSERT
David Sterba [Tue, 24 Jan 2017 12:17:25 +0000 (13:17 +0100)]
btrfs-progs: kerncompat: pass exact condition value from ASSERT

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: kerncompat: add separate trace print for BUG_ON
David Sterba [Tue, 24 Jan 2017 12:15:41 +0000 (13:15 +0100)]
btrfs-progs: kerncompat: add separate trace print for BUG_ON

We want to pass unmodified condition down to the handlers so we can't
use assert_trace for that purpose.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Fix disable backtrace assert error
Qu Wenruo [Thu, 19 Jan 2017 04:00:03 +0000 (12:00 +0800)]
btrfs-progs: Fix disable backtrace assert error

Due to commit 00e769d04c2c83029d6c71(btrfs-progs: Correct value printed
by assertions/BUG_ON/WARN_ON), which changed the assert_trace()
parameter, the condition passed to assert/WARN_ON/BUG_ON are logical
notted for backtrace enabled and disabled case.

Such behavior makes us easier to pass value wrong, and in fact it did
cause us to pass wrong condition for ASSERT().

Instead of passing different conditions for ASSERT/WARN_ON/BUG_ON()
manually, this patch will use ASSERT() to implement the resting
ASSERT/WARN_ON/BUG() for disable backtrace case, and use assert_trace()
to implement ASSERT() and BUG_ON(), to allow them to print correct
value.

Also, move WARN_ON() out of the ifdef branch, as it's completely the
same for both branches.

Cc: Goldwyn Rodrigues <rgoldwyn@suse.de>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: quota: fix printing during wait mode
Jeff Mahoney [Wed, 18 Jan 2017 01:56:39 +0000 (20:56 -0500)]
btrfs-progs: quota: fix printing during wait mode

If we call "btrfs quota rescan -w", it will attempt to start the rescan
operation, wait for it, and then print the "quota rescan started" message.
The wait could last an arbitrary amount of time, so printing it after
the wait isn't very helpful.

This patch reworks how we print the rescan started message as well as the
printing of the messages, including adding an error message for status
query failures (which could be EPERM/EFAULT/ENOMEM, not just no rescan
in progress) and wait failures.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: sanitize - Use correct source for memcpy
Goldwyn Rodrigues [Fri, 20 Jan 2017 19:03:33 +0000 (13:03 -0600)]
btrfs-progs: sanitize - Use correct source for memcpy

While performing a memcpy, we are copying from uninitialized dst
as opposed to src->data. Though using eb->len is correct, I used
src->len to make it more readable.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: fix false alert on dropped leaf in lowmem mode
Qu Wenruo [Wed, 18 Jan 2017 05:21:07 +0000 (13:21 +0800)]
btrfs-progs: check: fix false alert on dropped leaf in lowmem mode

For btrfs-progs test case 021-partially-dropped-snapshot-case, if the
first leaf is already dropped, btrfs check low-memory mode will report
false alert:

checking fs roots
checksum verify failed on 29917184 found E4E3BDB6 wanted 00000000
checksum verify failed on 29917184 found E4E3BDB6 wanted 00000000
checksum verify failed on 29917184 found E4E3BDB6 wanted 00000000
checksum verify failed on 29917184 found E4E3BDB6 wanted 00000000

This is caused by we are calling check_fs_first_inode() function,
unlike the rest part of check_fs_root_v2(), it doesn't have enough check
on dropping progress, and caused the false alert.

Fix it by checking dropping progress before searching slot.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: tests: 005-qgroup-show
David Sterba [Fri, 20 Jan 2017 16:54:04 +0000 (17:54 +0100)]
btrfs-progs: tests: 005-qgroup-show

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: qgroup show: refine error messages
David Sterba [Fri, 20 Jan 2017 16:52:12 +0000 (17:52 +0100)]
btrfs-progs: qgroup show: refine error messages

When qgroup show is called on a filesystem that does not have quotas
enabled, the error message is very unclear:

  ERROR: can't perform the search - No such file or directory
  ERROR: can't list qgroups: No such file or director

Remove the error from low level helper and let the command handler
decide what to print.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: qgroups show: clean up errno passing
David Sterba [Fri, 20 Jan 2017 16:41:55 +0000 (17:41 +0100)]
btrfs-progs: qgroups show: clean up errno passing

We should use return value for errors, not errno.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: docs: fix typo in btrfs-subvolume
Esteve Fernandez [Mon, 9 Jan 2017 16:59:02 +0000 (17:59 +0100)]
btrfs-progs: docs: fix typo in btrfs-subvolume

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: corrupt-block: Include more inode fields
Lakshmipathi.G [Thu, 5 Jan 2017 17:03:58 +0000 (18:03 +0100)]
btrfs-progs: corrupt-block: Include more inode fields

Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: corrupt-block: Include inode nlink field
Lakshmipathi.G [Thu, 5 Jan 2017 10:08:32 +0000 (11:08 +0100)]
btrfs-progs: corrupt-block: Include inode nlink field

Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: defrag: remove v1 ioctl support
David Sterba [Thu, 12 Jan 2017 14:12:09 +0000 (15:12 +0100)]
btrfs-progs: defrag: remove v1 ioctl support

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: defrag: force using v2 defrag ioctl and make default 32M threshold actua...
David Sterba [Thu, 12 Jan 2017 14:00:47 +0000 (15:00 +0100)]
btrfs-progs: defrag: force using v2 defrag ioctl and make default 32M threshold actually work

A user reported on IRC that the new 32M default for target extent size
does not work. This happens because if there are no commandline options,
the v1 ioctl is used that does not do any fine grained defrag. As the v2
ioctl has been introduced 6 years ago (2010, kernel 2.6.33) we won't
keep backward compatibility anymore.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Fix spelling/typos in user-facing strings
Nicholas D Steeves [Fri, 6 Jan 2017 03:40:47 +0000 (22:40 -0500)]
btrfs-progs: Fix spelling/typos in user-facing strings

Signed-off-by: Nicholas D Steeves <nsteeves@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: mkfs: print device name while trimming
David Sterba [Fri, 6 Jan 2017 12:47:07 +0000 (13:47 +0100)]
btrfs-progs: mkfs: print device name while trimming

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: enable negative numbers for unallocated device space
David Sterba [Tue, 3 Jan 2017 17:26:43 +0000 (18:26 +0100)]
btrfs-progs: enable negative numbers for unallocated device space

The unallocated space is not calculated correctly when a device
deltion/replace is in progress. This appears as huge number, EiB-sized.
It's really a negative number, because we don't have entire information
available and mixing numbers that do and don't take the deleted device
size into account.

We have to query search ioctl to retrieve the missing information, also
this requires root access for the ioctl, so we still need a workaround
for non-root case. Here the negative numbers seem to be a bit more
practical than EiB numbers.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: make negative number pretty printing optional
David Sterba [Tue, 3 Jan 2017 17:03:44 +0000 (18:03 +0100)]
btrfs-progs: make negative number pretty printing optional

Add a unit mode that will interpret the input number as a signed 64bit,
optionally and not by default for all numbers.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: utils: negative numbers are more plausible than sizes over 8 EiB
Zygo Blaxell [Sat, 3 Dec 2016 20:39:54 +0000 (15:39 -0500)]
btrfs-progs: utils: negative numbers are more plausible than sizes over 8 EiB

I got tired of seeing "16.00EiB" whenever btrfs-progs encounters a
negative size value, e.g. during resize:

Unallocated:
   /dev/mapper/datamd18   16.00EiB

This version is much more useful:

Unallocated:
   /dev/mapper/datamd18  -26.29GiB

Signed-off-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
Reviewed-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: get the highest inode for lost+found
Goldwyn Rodrigues [Tue, 20 Dec 2016 12:08:54 +0000 (06:08 -0600)]
btrfs-progs: check: get the highest inode for lost+found

root->highest_inode is not accurate at the time of creating a lost+found
and it fails because the highest_inode+1 is already present. This could be
because of fixes after highest_inode is set. Instead, search
for the highest inode in the tree and use it for lost+found.

This makes root->highest_inode unnecessary and hence deleted.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agoBtrfs progs v4.9
David Sterba [Fri, 23 Dec 2016 18:50:39 +0000 (19:50 +0100)]
Btrfs progs v4.9

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: update CHANGES for v4.9
David Sterba [Wed, 14 Dec 2016 14:22:52 +0000 (15:22 +0100)]
btrfs-progs: update CHANGES for v4.9

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: convert-test: trigger chunk allocation after convert
Qu Wenruo [Mon, 19 Dec 2016 06:56:42 +0000 (14:56 +0800)]
btrfs-progs: convert-test: trigger chunk allocation after convert

Populate fs after convert so we can trigger data chunk allocation.
This can expose too restrict old rollback condition

Reported-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: file-item: Fix wrong file extents inserted
Qu Wenruo [Mon, 19 Dec 2016 06:56:37 +0000 (14:56 +0800)]
btrfs-progs: file-item: Fix wrong file extents inserted

If we specify NO_HOLES incompat feature when converting, the result
image still uses hole file extents.
And further more, the hole is incorrect as its disk_num_bytes is not
zero.

The problem is at btrfs_insert_file_extent() which doesn't check if we
are going to insert hole file extent.

Modify it to skip hole file extents to allow it follow restrict NO_HOLES
flag.

And since no_holes flag can be triggered on half-way, so current fsck
won't report such error, as it consider it as old file holes.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Fix NULL pointer when receive clone operation
Qu Wenruo [Thu, 15 Dec 2016 08:37:02 +0000 (16:37 +0800)]
btrfs-progs: Fix NULL pointer when receive clone operation

Regression introduced by a2f7af94abe4a3491ca1280a2ae1d63edc0d62ab
"btrfs-progs: subvol_uuid_search: return error encoded pointer"
IS_ERR() will only check if it's an error code, won't check if it's
NULL.  And for all the caller the commit modifies, it can return NULL
and makes cause segfault.

Fix it by introducing new IS_ERR_OR_NULL() macro, and for NULL pointer
and needs to return int case, convert NULL pointer to -ENOENT.

Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Tested-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: Fix false alert on generation mismatch for tree reloc tree
Qu Wenruo [Mon, 5 Dec 2016 09:07:56 +0000 (17:07 +0800)]
btrfs-progs: check: Fix false alert on generation mismatch for tree reloc tree

For fs with tree reloc tree(under balancing), lowmem mode will report
false alert like:
ERROR: extent[62914560 4096] backref generation mismatch, wanted: <=9,
have: 13

This is because lowmem mode adds a more restrict check, to ensure
generation in fs tree won't be smaller than extent tree.

In fact such assumption is not right for tree reloc tree, so remove such
check.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: Fix lowmem false alert on tree reloc tree
Qu Wenruo [Mon, 5 Dec 2016 09:07:55 +0000 (17:07 +0800)]
btrfs-progs: check: Fix lowmem false alert on tree reloc tree

Lowmem mode will report false alert if the fs has tree reloc tree like:
ERROR: shared extent[30011392 4096] lost its parent (parent: 30011392,
level: 1)

The problem is check_shared_block_backref() can't handle tree reloc
tree's self-pointing backref.

And still try to read out the tree block then seeking for the
referencer.

The correct method for it is to check if it's tree reloc root.
In that case, we should check found the ROOT_ITEM of tree reloc tree in
root tree.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: Fix lowmem mode stack overflow caused by fsck/023
Qu Wenruo [Mon, 5 Dec 2016 09:07:54 +0000 (17:07 +0800)]
btrfs-progs: check: Fix lowmem mode stack overflow caused by fsck/023

Lowmem mode fsck will overflow its stack since it will do infinite
backref check for tree reloc root.
We should not check backref if it's pointing to itself for tree reloc
root.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: Fix assert when using lowmem on fs with tree reloc tree
Qu Wenruo [Mon, 5 Dec 2016 09:07:53 +0000 (17:07 +0800)]
btrfs-progs: check: Fix assert when using lowmem on fs with tree reloc tree

When using lowmem mode, btrfs check will report ASSERT for calling
btrfs_read_fs_root() on tree reloc tree.

Fix it by checking objectid and call btrfs_read_fs_root_no_cache() for
tree reloc tree.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: convert: Fix migrate_super_block() to work with 64k sectorsize
Chandan Rajendra [Thu, 8 Dec 2016 13:56:20 +0000 (19:26 +0530)]
btrfs-progs: convert: Fix migrate_super_block() to work with 64k sectorsize

migrate_super_block() uses sectorsize to refer to the size of the
superblock. Hence on 64k sectorsize filesystems, it ends up computing
checksum beyond the super block length (i.e.
BTRFS_SUPER_INFO_SIZE). This commit fixes the bug by using
BTRFS_SUPER_INFO_SIZE instead of sectorsize of the underlying
filesystem.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: convert: Prevent accounting blocks beyond end of device
Chandan Rajendra [Thu, 8 Dec 2016 13:56:19 +0000 (19:26 +0530)]
btrfs-progs: convert: Prevent accounting blocks beyond end of device

When looping across data block bitmap, __ext2_add_one_block() may add
blocks which do not exist on the underlying disk. This commit prevents
this from happening by checking the block index against the maximum
block count that was present in the ext4 filesystem instance that is
being converted.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: defrag: warn when deframgenting directories without -r
David Sterba [Mon, 12 Dec 2016 17:38:47 +0000 (18:38 +0100)]
btrfs-progs: defrag: warn when deframgenting directories without -r

The current implementaion of defrag ioctl on directoreis does not do
what users expect. The -r needs to be specified, but we should also
print a warning to avoid confusion.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: defrag: cleanup temporary errno value
David Sterba [Mon, 12 Dec 2016 17:22:10 +0000 (18:22 +0100)]
btrfs-progs: defrag: cleanup temporary errno value

Rename a single letter variable and move the defintion to the scope of
use.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: recursive defrag cleanup duplicate code
Anand Jain [Tue, 6 Dec 2016 04:39:38 +0000 (12:39 +0800)]
btrfs-progs: recursive defrag cleanup duplicate code

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: dev stats: update option name for checking non-zero status
David Sterba [Mon, 12 Dec 2016 17:02:19 +0000 (18:02 +0100)]
btrfs-progs: dev stats: update option name for checking non-zero status

Rename the option to -c|--check and update documentation.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: handle failed strdup in subvol_uuid_search2
David Sterba [Mon, 12 Dec 2016 16:53:31 +0000 (17:53 +0100)]
btrfs-progs: handle failed strdup in subvol_uuid_search2

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: library: bump to 0.1.2
David Sterba [Mon, 12 Dec 2016 16:48:19 +0000 (17:48 +0100)]
btrfs-progs: library: bump to 0.1.2

API changes:
* add subvol_uuid_search2: changed return value

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: fixup API after change in subvol_uuid_search
David Sterba [Mon, 12 Dec 2016 16:45:25 +0000 (17:45 +0100)]
btrfs-progs: fixup API after change in subvol_uuid_search

The return value fix to subvol_uuid_search changes the API semantics, we
must keep it compatible, so we introduce a v2 interface that returns the
negative error value in case of error. Library version bump will follow.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: subvol_uuid_search: return error code on memory allocation failure
Prasanth K S R [Sat, 10 Dec 2016 13:47:44 +0000 (19:17 +0530)]
btrfs-progs: subvol_uuid_search: return error code on memory allocation failure

On failure of memory allocation for a 'struct subvol_info', we would end
up dereferencing a NULL pointer. This commit fixes the issue by returning an
error encoded pointer.

Signed-off-by: Prasanth K S R <prasanth.ksr@dell.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: subvol_uuid_search: return error encoded pointer
Prasanth K S R [Sat, 10 Dec 2016 13:47:43 +0000 (19:17 +0530)]
btrfs-progs: subvol_uuid_search: return error encoded pointer

This commit changes subvol_uuid_search() to return an error encoded
pointer on failure.

Signed-off-by: Prasanth K S R <prasanth.ksr@dell.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: subvol_uuid_search: return error on memory allocation failure
Prasanth K S R [Sat, 10 Dec 2016 13:47:42 +0000 (19:17 +0530)]
btrfs-progs: subvol_uuid_search: return error on memory allocation failure

This commit fixes coverity defect CID 1328695.

Resolves-coverity-id: 1328695
Signed-off-by: Prasanth K S R <prasanth.ksr@dell.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: help: fix printing of aliased commands
David Sterba [Thu, 8 Dec 2016 18:27:50 +0000 (19:27 +0100)]
btrfs-progs: help: fix printing of aliased commands

The help string for aliased commands is glued on one line.  This
happened for device delete/remove.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: docs: update dev stats help and manual page
David Sterba [Thu, 8 Dec 2016 18:21:28 +0000 (19:21 +0100)]
btrfs-progs: docs: update dev stats help and manual page

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: dev stats: add long option for -z
David Sterba [Thu, 8 Dec 2016 18:12:10 +0000 (19:12 +0100)]
btrfs-progs: dev stats: add long option for -z

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: dev stats: use table based printing of items
David Sterba [Thu, 8 Dec 2016 18:01:00 +0000 (19:01 +0100)]
btrfs-progs: dev stats: use table based printing of items

Fewer lines, less code.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: dev stats: use char type path
David Sterba [Thu, 8 Dec 2016 17:37:10 +0000 (18:37 +0100)]
btrfs-progs: dev stats: use char type path

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: dev stats: adjust some error messages
David Sterba [Thu, 8 Dec 2016 17:33:30 +0000 (18:33 +0100)]
btrfs-progs: dev stats: adjust some error messages

- use commonly used ioctl name spelling
- more specific error message after reading device info

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: dev stats: add dev stats returncode option
Austin S. Hemmelgarn [Mon, 5 Dec 2016 18:35:20 +0000 (13:35 -0500)]
btrfs-progs: dev stats: add dev stats returncode option

Currently, `btrfs device stats` returns non-zero only when there was an
error getting the counter values.  This is fine for when it gets run by a
user directly, but is a serious pain when trying to use it in a script or
for monitoring since you need to parse the (not at all machine friendly)
output to check the counter values.

This patch adds an option ('-s') which causes `btrfs device stats`
to set bit 6 in the return code if any of the counters are non-zero.
This greatly simplifies checking from a script or monitoring software if
any errors have been recorded.  In the event that this switch is passed
and an error occurs reading the stats, the return code will have bit
0 set (so if there are errors reading counters, and the counters which
were read were non-zero, the return value will be 65).

Signed-off-by: Austin S. Hemmelgarn <ahferroin7@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: docs: make documentation updates workflow more clear
David Sterba [Thu, 8 Dec 2016 16:36:04 +0000 (17:36 +0100)]
btrfs-progs: docs: make documentation updates workflow more clear

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: docs: fix typo in mkfs manual page
Noah Massey [Wed, 30 Nov 2016 20:48:20 +0000 (15:48 -0500)]
btrfs-progs: docs: fix typo in mkfs manual page

Signed-off-by: Noah Massey <noah.massey@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: find_free_dev_extent() closer to kernel code
Goldwyn Rodrigues [Thu, 1 Dec 2016 17:28:33 +0000 (11:28 -0600)]
btrfs-progs: find_free_dev_extent() closer to kernel code

This solves an ENOSPC issue with nearly full filesystems.

The only things missing from the function is contains_pending_extent()
which should not be required in this case.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Initialize ret to suppress compiler warning
Goldwyn Rodrigues [Thu, 1 Dec 2016 17:28:20 +0000 (11:28 -0600)]
btrfs-progs: Initialize ret to suppress compiler warning

The path that leaves ret unintialized goes through the second if block
and requires dback->found_ref to be 0. Quick search leads to several
places where it's set according to found items so we won't reach the for
loop with found_ref 0.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
[ updated changelog ]
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: fix extents after finding all errors
Goldwyn Rodrigues [Thu, 1 Dec 2016 17:28:08 +0000 (11:28 -0600)]
btrfs-progs: check: fix extents after finding all errors

Simplifying the logic of fixing.

Calling fixup_extent_ref() after encountering every error causes
more error messages after the extent is fixed. In case of multiple errors,
this is confusing because the error message is displayed after the fix
message and it works on stale data. It is best to show all errors and
then fix the extents.

Set a variable and call fixup_extent_ref() if it is set. err is not used,
so cleared it.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: man mkfs: warn about RAID5/6 being experimental
Adam Borowski [Mon, 28 Nov 2016 18:52:43 +0000 (19:52 +0100)]
btrfs-progs: man mkfs: warn about RAID5/6 being experimental

Signed-off-by: Adam Borowski <kilobyte@angband.pl>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: docs: clarify trim after mkfs -K
David Sterba [Tue, 6 Dec 2016 17:26:31 +0000 (18:26 +0100)]
btrfs-progs: docs: clarify trim after mkfs -K

A user question on IRC about mkfs -K and mount with discard.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: mkfs: annotation of a case
David Sterba [Thu, 1 Dec 2016 15:46:19 +0000 (16:46 +0100)]
btrfs-progs: mkfs: annotation of a case

Annotate to silence static analysis warning.

Resolves-coverity-id: 1396656
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Use helper function to access btrfs_super_block->sys_chunk_array_size
Chandan Rajendra [Thu, 1 Dec 2016 13:51:14 +0000 (19:21 +0530)]
btrfs-progs: Use helper function to access btrfs_super_block->sys_chunk_array_size

btrfs_super_block->sys_chunk_array_size is stored as le32 data on
disk. However insert_temp_chunk_item() writes sys_chunk_array_size in
host cpu order. This commit fixes this by using super block access
helper functions to read and write
btrfs_super_block->sys_chunk_array_size field.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: run mkfs tests in CI
David Sterba [Wed, 30 Nov 2016 15:50:33 +0000 (16:50 +0100)]
btrfs-progs: run mkfs tests in CI

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: tests: check for partscan support in misc/006-partitioned-loopdev
David Sterba [Wed, 30 Nov 2016 15:49:18 +0000 (16:49 +0100)]
btrfs-progs: tests: check for partscan support in misc/006-partitioned-loopdev

The travis CI does not have losetup with --partscan, skip the check in
that case so we can still run the mkfs testsuite.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Remove duplicate printfs in warning_trace()/assert_trace()
Goldwyn Rodrigues [Tue, 29 Nov 2016 16:25:14 +0000 (10:25 -0600)]
btrfs-progs: Remove duplicate printfs in warning_trace()/assert_trace()

Code reduction. Call warning_trace from assert_trace in order to
reduce the printf's used. Also, trace variable in warning_trace()
is not required because it is already handled by BTRFS_DISABLE_BACKTRACE.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: Correct value printed by assertions/BUG_ON/WARN_ON
Goldwyn Rodrigues [Tue, 29 Nov 2016 16:24:52 +0000 (10:24 -0600)]
btrfs-progs: Correct value printed by assertions/BUG_ON/WARN_ON

The values passed to BUG_ON/WARN_ON are negated(!) and printed, which
results in printing the value zero for each bug/warning. For example:
volumes.c:988: btrfs_alloc_chunk: Assertion `ret` failed, value 0

This is not useful. Instead changed to print the value of the parameter
passed to BUG_ON()/WARN_ON(). The value needed to be changed to long
to accomodate pointers being passed.

Also, consolidated assert() and BUG() into ifndef.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: move mkfs.btrfs sources to own directory
David Sterba [Mon, 28 Nov 2016 14:22:16 +0000 (15:22 +0100)]
btrfs-progs: move mkfs.btrfs sources to own directory

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: move btrfs-convert to own directory
David Sterba [Mon, 28 Nov 2016 13:35:53 +0000 (14:35 +0100)]
btrfs-progs: move btrfs-convert to own directory

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: build: extend pattern rules for standalone directories
David Sterba [Mon, 28 Nov 2016 13:35:58 +0000 (14:35 +0100)]
btrfs-progs: build: extend pattern rules for standalone directories

Per-directory cflags and libs can be now defined as:

 btrfs-DIRNAME-cflags
 btrfs-DIRNAME-libs

and will be newly used for all DIRNAME/*.[ch] files.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: docs: update receive help and manual page
David Sterba [Mon, 21 Nov 2016 17:19:57 +0000 (18:19 +0100)]
btrfs-progs: docs: update receive help and manual page

Reword several option descriptions, add missing short option -E,
formatting adjustments.

Visual bug fix: the first line is printed in short help, the second line
is long description, thus alternative calling syntax must be printed on
one line.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: tests: add more gobal option to test 001-btrfs
David Sterba [Mon, 21 Nov 2016 13:55:11 +0000 (14:55 +0100)]
btrfs-progs: tests: add more gobal option to test 001-btrfs

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: send dump: use reentrant variant of localtime
David Sterba [Mon, 7 Nov 2016 11:00:28 +0000 (12:00 +0100)]
btrfs-progs: send dump: use reentrant variant of localtime

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: receive: introduce option to dump send stream
Qu Wenruo [Wed, 7 Sep 2016 00:29:34 +0000 (08:29 +0800)]
btrfs-progs: receive: introduce option to dump send stream

Introduce new option, '--dump' for receive subcommand.

With this command, user can dump the metadata of a send stream.
Which is quite useful for education purpose or bug reporting.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: send dump: print escaped path
David Sterba [Mon, 7 Nov 2016 10:43:40 +0000 (11:43 +0100)]
btrfs-progs: send dump: print escaped path

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: send dump: introduce helper for printing escaped path
David Sterba [Mon, 7 Nov 2016 10:42:02 +0000 (11:42 +0100)]
btrfs-progs: send dump: introduce helper for printing escaped path

The send dump prints one line per stream operation, we'd like to prevent
any line breakage, so the characters are printed escaped in the C style.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: introduce new send-dump object
Qu Wenruo [Wed, 7 Sep 2016 00:29:33 +0000 (08:29 +0800)]
btrfs-progs: introduce new send-dump object

Introduce send-dump.[ch] which implements a new btrfs_send_ops to
exam and output all operations inside a send stream.

It has a better output format than the old and no longer compilable
send-test tool, but still tries to be script friendly.

Provides the basis for later "inspect-internal dump-send" command.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
[ drop escaping call from __print_dump for now, drop gcc warning tweaks,
  replace empty format strings with NULL ]
Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: use on-stack path buffer in check_fs_roots_v2
David Sterba [Wed, 2 Nov 2016 23:37:51 +0000 (00:37 +0100)]
btrfs-progs: check: use on-stack path buffer in check_fs_roots_v2

We don't need to conserve stack space too much unlike kernel, also
remove one error condition.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: use on-stack path buffer in check_fs_root_v2
David Sterba [Wed, 2 Nov 2016 23:37:51 +0000 (00:37 +0100)]
btrfs-progs: check: use on-stack path buffer in check_fs_root_v2

We don't need to conserve stack space too much unlike kernel, also
remove one error condition.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: check: use on-stack path buffer in check_fs_first_inode
David Sterba [Wed, 2 Nov 2016 23:37:51 +0000 (00:37 +0100)]
btrfs-progs: check: use on-stack path buffer in check_fs_first_inode

We don't need to conserve stack space too much unlike kernel, also
remove one error condition.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: receive: rename receive context variable
David Sterba [Wed, 2 Nov 2016 22:42:56 +0000 (23:42 +0100)]
btrfs-progs: receive: rename receive context variable

Do not use single letter variable name.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: make incompat bit wrappers more compact
David Sterba [Wed, 2 Nov 2016 22:37:03 +0000 (23:37 +0100)]
btrfs-progs: make incompat bit wrappers more compact

Use the same macro tricks as in kernel code.

Signed-off-by: David Sterba <dsterba@suse.com>
7 years agobtrfs-progs: send: rename thread callback to read data from kernel
David Sterba [Wed, 2 Nov 2016 14:04:47 +0000 (15:04 +0100)]
btrfs-progs: send: rename thread callback to read data from kernel

Signed-off-by: David Sterba <dsterba@suse.com>