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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
David Sterba [Wed, 2 Nov 2016 13:54:10 +0000 (14:54 +0100)]
btrfs-progs: send: use splice syscall instead of read/write to transfer buffer
We can utilize the splice syscall as the source descriptor is a pipe and
avoid read/write through userspace. The original implementation is kept
but shall be removed in the future.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Mon, 31 Oct 2016 10:01:23 +0000 (11:01 +0100)]
btrfs-progs: use symbolic name for first inode number when searching
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Fri, 28 Oct 2016 16:47:35 +0000 (18:47 +0200)]
btrfs-progs: remove extra newline from messages
The common message helpers add the newline.
Signed-off-by: David Sterba <dsterba@suse.com>
Qu Wenruo [Mon, 24 Oct 2016 02:43:35 +0000 (10:43 +0800)]
btrfs-progs: check: fix NULL pointer dereference for possible memory allocation failure
We didn't check 'path' allocated in check_root_ref(), which can cause
NULL pointer dereference if the memory allocation failed.
Fix it by using stack memory, since the function should return error
bitmap not minus error code, we don't want memory allocation to be an
exception.
Resolves-Coverity-CID: 1372510
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Qu Wenruo [Mon, 24 Oct 2016 02:43:33 +0000 (10:43 +0800)]
btrfs-progs: fsck: Fix patch allocation check and leak in check_fs_first_inode
Allocated 'path' in check_fs_first_inode() is not checked and for
btrfs_search_slot() error, it will leak 'path'.
Fix it.
Resolves-Coverity-CID: 1374098
Resolves-Coverity-CID: 1374099
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Qu Wenruo [Wed, 21 Sep 2016 02:37:27 +0000 (10:37 +0800)]
btrfs-progs: check: Enhance leaf traversal function to handle missing inode item
The leaf traversal function in lowmem mode will skip to the first inode
item of leaf and begin to check the inode.
That's designed to avoid checking overlapping part of a leaf.
But that will cause problem in fsck/010 test case, as in that case inode
item of the first inode(256) is missing.
So above traversal will check from inode 257 and found nothing wrong.
The fix is done in 2 part:
1) Manually check the first inode
To avoid case like fsck/010
2) Check inode if ino changes from the first ino of a leaf
To avoid missing inode_item problem.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Wang Xiaoguang [Wed, 24 Aug 2016 07:49:17 +0000 (15:49 +0800)]
btrfs-progs: check: skip shared node or leaf check for low_memory mode
The basic idea is simple. Assume a middle tree node A is shared and
its referencing fs/file tree root ids are 5, 258 and 260, then we
only check node A in the tree who has the smallest root id. That means
in this case, when checking root tree(5), we check inode A, for root
tree 258 and 260, we can just skip it.
Notice even with this patch, we still may visit a shared node or leaf
multiple times. This happens when a inode metadata occupies multiple
leaves.
leaf_A leaf_B
When checking inode item in leaf_A, assume inode[512] have file extents
in leaf_B, and leaf_B is shared. In the case, for inode[512], we must
visit leaf_B to have inode item checked. After finishing inode[512] check,
here we walk down tree root to leaf_B to check whether node or leaf
is shared, if some node or leaf is shared, we can just skip it and below
nodes or leaf's check.
I also fill a disk partition with linux source codes and create 3
snapshots in it. Before this patch, it averagely took 46s to finish one
btrfsck execution, with this patch, it averagely took 15s.
Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Tue, 20 Sep 2016 05:49:06 +0000 (13:49 +0800)]
btrfs-progs: check: fix the return value bug of cmd_check()
The function cmd_check() is called by the main function of btrfs.c, its
return value will be returned by exit(). Resulting in the loss of
significant bits in some cases, for example this value is greater than
0377. If use a bool value "err" to store all of the return value, this
will solve the problem.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Tue, 26 Jul 2016 06:26:50 +0000 (14:26 +0800)]
btrfs-progs: check: introduce low_memory mode fs_tree check
Introduce a new function check_fs_roots_v2() for check fs_tree in
low_memory mode. It call check_fs_root_v2() to check fs_root, and call
check_root_ref() to check root_ref.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Tue, 26 Jul 2016 05:12:11 +0000 (13:12 +0800)]
btrfs-progs: check: introduce function to check root ref
Introduce a new function check_root_ref() to check
root_ref/root_backref.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Tue, 26 Jul 2016 03:18:40 +0000 (11:18 +0800)]
btrfs-progs: check: introduce function to check fs root
Introduce a new function check_fs_root_v2() to check fs root,
and call check_inode_item to check the items in the tree.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Tue, 26 Jul 2016 02:44:22 +0000 (10:44 +0800)]
btrfs-progs: check: introduce function to check inode item
Introduce a new function check_inode_item() to check INODE_ITEM and
related ITEMs that have the same inode id.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Tue, 26 Jul 2016 02:03:01 +0000 (10:03 +0800)]
btrfs-progs: check: introduce function to check file extent
Introduce a new function check_file_extent() to check file extent,
such as datasum, hole, size.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Mon, 25 Jul 2016 06:57:36 +0000 (14:57 +0800)]
btrfs-progs: check: introduce function to check dir_item
Introduce a new function check_dir_item() to check DIR_ITEM/DIR_INDEX,
and call find_inode_ref() to find the related INODE_REF/INODE_EXTREF.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Mon, 25 Jul 2016 05:12:35 +0000 (13:12 +0800)]
btrfs-progs: check: introduce function to find inode_ref
Introduce a new function find_inode_ref() to find
INODE_REF/INODE_EXTREF for the given key, and check it with the
specified DIR_ITEM/DIR_INDEX match.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Tue, 26 Jul 2016 06:00:01 +0000 (14:00 +0800)]
btrfs-progs: check: introduce function to check inode_extref
Introduce a new function check_inode_extref() to check INODE_EXTREF, and
call find_dir_item() to find the related DIR_ITEM/DIR_INDEX.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Mon, 25 Jul 2016 02:24:05 +0000 (10:24 +0800)]
btrfs-progs: check: introduce function to check inode_ref
Introduce a new function check_inode_ref() to check INODE_REF,
and call find_dir_item() to find the related DIR_ITEM/DIR_INDEX.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Lu Fengqi [Thu, 21 Jul 2016 05:51:51 +0000 (13:51 +0800)]
btrfs-progs: check: introduce function to find dir_item
Introduce a new function find_dir_item() to find DIR_ITEM for the given
key, and check it with the specified INODE_REF/INODE_EXTREF match.
Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Qu Wenruo [Fri, 30 Sep 2016 05:04:57 +0000 (13:04 +0800)]
btrfs-progs: volumes: Use new raid5_gen_result to calculate raid5 parity
Use thew raid5_gen_result() function to calculate raid5 parity.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Qu Wenruo [Fri, 30 Sep 2016 05:04:56 +0000 (13:04 +0800)]
btrfs-progs: raid56: Introduce new function to calculate raid5 parity or data stripe
Introduce new function raid5_gen_result() to calculate parity or data
stripe.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Wed, 30 Nov 2016 12:06:08 +0000 (13:06 +0100)]
Btrfs progs v4.8.5
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Wed, 30 Nov 2016 12:04:34 +0000 (13:04 +0100)]
btrfs-progs: update CHANGES for v4.8.5
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Wed, 30 Nov 2016 11:37:47 +0000 (12:37 +0100)]
btrfs-progs: test: fix static build of library-test
The static variant of the test was broken, but not really used anyway.
Use the right compilation and linking flags.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Wed, 30 Nov 2016 11:34:17 +0000 (12:34 +0100)]
btrfs-progs: tests: add correct rpath to library-test
Our library-test dynamically linked binary was not using the built
libbtrfs. To fix that, use -rpath.
Reported-by: Mike Gilbert <floppymaster@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 29 Nov 2016 15:12:15 +0000 (16:12 +0100)]
btrfs-progs: tests: end of stream conditions
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 29 Nov 2016 15:07:19 +0000 (16:07 +0100)]
btrfs-progs: receive: properly detect end of stream conditions
Read buffer helper mistakenly reported end of data as an error. Next, we
have to check if the first stream exists as an empty file is not a valid
stream.
Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Fri, 25 Nov 2016 17:20:34 +0000 (18:20 +0100)]
btrfs-progs: docs: fix typo in btrfs-man5
Reported via IRC.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Fri, 25 Nov 2016 08:58:48 +0000 (09:58 +0100)]
Btrfs progs v4.8.4
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Thu, 24 Nov 2016 12:30:31 +0000 (13:30 +0100)]
btrfs-progs: update CHANGES for v4.8.4
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Thu, 24 Nov 2016 10:30:06 +0000 (11:30 +0100)]
btrfs-progs: build: link against local libraries
If there's a system provided libbtrfs.0, it will be used for the
library-test build and could miss linker errors, as reported.
Reported-by: Mike Gilbert <floppymaster@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Wed, 23 Nov 2016 09:39:05 +0000 (10:39 +0100)]
btrfs-progs: test: extend library-test coverage
Add test for linkage error of lookup_path_rootid. The built binary has
to be run to catch also run-time errors.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Wed, 23 Nov 2016 09:36:43 +0000 (10:36 +0100)]
btrfs-progs: move lookup_path_rootid to library utils
The refactoring in commit
1c85c3de5aab997ff66ea95cb0f2c9f79726ec40 has
broken use of libbtrfs that does not exhibit during build but at the run
time.
Fixes:
1c85c3de5aab997ff66ea95cb0f2c9f79726ec40
Bugzilla: https://bugs.gentoo.org/show_bug.cgi?id=600078
Reported-by: Mike Gilbert <floppymaster@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 22 Nov 2016 17:19:34 +0000 (18:19 +0100)]
btrfs-progs: print-tree: fix format string on 32bit
We're passing a size_t, use the right format specifier.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 22 Nov 2016 15:55:11 +0000 (16:55 +0100)]
btrfs-progs: move bitops.h to kernel-lib
Forgotten when the rest got moved.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 22 Nov 2016 15:34:44 +0000 (16:34 +0100)]
btrfs-progs: deprecate standalone btrfs-show-super
The functionality is now provided by 'inspect dump-super'.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 22 Nov 2016 15:34:44 +0000 (16:34 +0100)]
btrfs-progs: deprecate standalone btrfs-calc-size
The functionality is now provided by 'inspect tree-stats'.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 22 Nov 2016 15:15:24 +0000 (16:15 +0100)]
btrfs-progs: move btrfs-image sources to own directory
There are no pending patches to btrfs-image, this looks like a good time
to move it.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Tue, 22 Nov 2016 12:32:18 +0000 (13:32 +0100)]
btrfs-progs: tests: add support for additional command arguments
Add convenient support for extending command arguments, now implemented
for 'btrfs check' to cover the low-memory mode. If defined, arguments
are inserted to any 'btrfs check' command in tests. Exceptions could be
defined in common.local.
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Mon, 21 Nov 2016 13:51:40 +0000 (14:51 +0100)]
btrfs-progs: tests: more variable quoting in common scripts
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Mon, 21 Nov 2016 13:44:06 +0000 (14:44 +0100)]
btrfs-progs: tests: drop redundant test for rwx number validity
The list of rwx permissions is now hardcoded but used to begenerated and
the invalid numbers filtered out. Not necessary anymore.
Signed-off-by: David Sterba <dsterba@suse.com>
Tsutomu Itoh [Mon, 21 Nov 2016 05:10:41 +0000 (14:10 +0900)]
btrfs-progs: test: fix how to make test files in fsck-tests 013
In my test environment, following error was occurred because the size
of /lib/modules/`uname -r`/* is larger than 1GB.
# make test-fsck
[TEST] fsck-tests.sh
[TEST/fsck] 013-extent-tree-rebuild
failed: cp -aR /lib/modules/4.9.0-rc5/ /test/btrfs-progs/tests/mnt
test failed for case 013-extent-tree-rebuild
Makefile:272: recipe for target 'test-fsck' failed
make: *** [test-fsck] Error 1
#
In this test case, 'generate_dataset small' is enough for making the
test files, so I will use 'generate_dataset' instead of 'cp'.
For this, move 'generate_dataset()' from 'common.convert' to 'common'.
Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Thu, 10 Nov 2016 17:31:53 +0000 (18:31 +0100)]
btrfs-progs: Update README and other docs
Signed-off-by: David Sterba <dsterba@suse.com>
Omar Sandoval [Wed, 16 Nov 2016 20:54:32 +0000 (12:54 -0800)]
btrfs-progs: check: fix missing newlines
Also, the other progress messages go to stderr, so "checking extents"
probably should, as well.
Fixes:
c7a1f66a205f ("btrfs-progs: check: switch some messages to common helpers")
Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Tsutomu Itoh [Thu, 17 Nov 2016 05:01:31 +0000 (14:01 +0900)]
btrfs-progs: qgroup: fix error in ASSERT condition expression
Option -f, -F and --sort don't work because a conditional expression
of ASSERT is wrong.
Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
David Sterba [Fri, 18 Nov 2016 18:21:02 +0000 (19:21 +0100)]
btrfs-progs: tests: add fallback to current directory for check_all_images
Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Tsutomu Itoh [Fri, 18 Nov 2016 05:44:12 +0000 (14:44 +0900)]
btrfs-progs: test: fix error of test target of Makefile
Add test-cli to test target of Makefile.
Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.com>