summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* btrfs-progs: file-item: Fix wrong file extents insertedQu Wenruo2016-12-21
| | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: Fix NULL pointer when receive clone operationQu Wenruo2016-12-21
| | | | | | | | | | | | | | | | 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>
* btrfs-progs: check: Fix false alert on generation mismatch for tree reloc treeQu Wenruo2016-12-14
| | | | | | | | | | | | | | | | 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>
* btrfs-progs: check: Fix lowmem false alert on tree reloc treeQu Wenruo2016-12-14
| | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: check: Fix lowmem mode stack overflow caused by fsck/023Qu Wenruo2016-12-14
| | | | | | | | | | 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>
* btrfs-progs: check: Fix assert when using lowmem on fs with tree reloc treeQu Wenruo2016-12-14
| | | | | | | | | | | 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>
* btrfs-progs: convert: Fix migrate_super_block() to work with 64k sectorsizeChandan Rajendra2016-12-14
| | | | | | | | | | | | | 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>
* btrfs-progs: convert: Prevent accounting blocks beyond end of deviceChandan Rajendra2016-12-14
| | | | | | | | | | | | 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>
* btrfs-progs: defrag: warn when deframgenting directories without -rDavid Sterba2016-12-14
| | | | | | | | 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>
* btrfs-progs: defrag: cleanup temporary errno valueDavid Sterba2016-12-14
| | | | | | | Rename a single letter variable and move the defintion to the scope of use. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: recursive defrag cleanup duplicate codeAnand Jain2016-12-14
| | | | | Signed-off-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dev stats: update option name for checking non-zero statusDavid Sterba2016-12-14
| | | | | | Rename the option to -c|--check and update documentation. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: handle failed strdup in subvol_uuid_search2David Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: library: bump to 0.1.2David Sterba2016-12-14
| | | | | | | API changes: * add subvol_uuid_search2: changed return value Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fixup API after change in subvol_uuid_searchDavid Sterba2016-12-14
| | | | | | | | 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>
* btrfs-progs: subvol_uuid_search: return error code on memory allocation failurePrasanth K S R2016-12-14
| | | | | | | | | 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>
* btrfs-progs: subvol_uuid_search: return error encoded pointerPrasanth K S R2016-12-14
| | | | | | | | 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>
* btrfs-progs: subvol_uuid_search: return error on memory allocation failurePrasanth K S R2016-12-14
| | | | | | | | 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>
* btrfs-progs: help: fix printing of aliased commandsDavid Sterba2016-12-14
| | | | | | | 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>
* btrfs-progs: docs: update dev stats help and manual pageDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dev stats: add long option for -zDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dev stats: use table based printing of itemsDavid Sterba2016-12-14
| | | | | | Fewer lines, less code. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dev stats: use char type pathDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dev stats: adjust some error messagesDavid Sterba2016-12-14
| | | | | | | - use commonly used ioctl name spelling - more specific error message after reading device info Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dev stats: add dev stats returncode optionAustin S. Hemmelgarn2016-12-14
| | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: docs: make documentation updates workflow more clearDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: fix typo in mkfs manual pageNoah Massey2016-12-14
| | | | | Signed-off-by: Noah Massey <noah.massey@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: find_free_dev_extent() closer to kernel codeGoldwyn Rodrigues2016-12-14
| | | | | | | | | | 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>
* btrfs-progs: Initialize ret to suppress compiler warningGoldwyn Rodrigues2016-12-14
| | | | | | | | | | | 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>
* btrfs-progs: check: fix extents after finding all errorsGoldwyn Rodrigues2016-12-14
| | | | | | | | | | | | | | | | 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>
* btrfs-progs: man mkfs: warn about RAID5/6 being experimentalAdam Borowski2016-12-14
| | | | | Signed-off-by: Adam Borowski <kilobyte@angband.pl> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: clarify trim after mkfs -KDavid Sterba2016-12-14
| | | | | | A user question on IRC about mkfs -K and mount with discard. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: annotation of a caseDavid Sterba2016-12-14
| | | | | | | Annotate to silence static analysis warning. Resolves-coverity-id: 1396656 Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Use helper function to access ↵Chandan Rajendra2016-12-14
| | | | | | | | | | | | | 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>
* btrfs-progs: run mkfs tests in CIDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: check for partscan support in misc/006-partitioned-loopdevDavid Sterba2016-12-14
| | | | | | | 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>
* btrfs-progs: Remove duplicate printfs in warning_trace()/assert_trace()Goldwyn Rodrigues2016-12-14
| | | | | | | | | 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>
* btrfs-progs: Correct value printed by assertions/BUG_ON/WARN_ONGoldwyn Rodrigues2016-12-14
| | | | | | | | | | | | | | | 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>
* btrfs-progs: move mkfs.btrfs sources to own directoryDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: move btrfs-convert to own directoryDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: build: extend pattern rules for standalone directoriesDavid Sterba2016-12-14
| | | | | | | | | | | 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>
* btrfs-progs: docs: update receive help and manual pageDavid Sterba2016-12-14
| | | | | | | | | | | 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>
* btrfs-progs: tests: add more gobal option to test 001-btrfsDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: send dump: use reentrant variant of localtimeDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: receive: introduce option to dump send streamQu Wenruo2016-12-14
| | | | | | | | | | 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>
* btrfs-progs: send dump: print escaped pathDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: send dump: introduce helper for printing escaped pathDavid Sterba2016-12-14
| | | | | | | 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>
* btrfs-progs: introduce new send-dump objectQu Wenruo2016-12-14
| | | | | | | | | | | | | | | 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>
* btrfs-progs: check: use on-stack path buffer in check_fs_roots_v2David Sterba2016-12-14
| | | | | | | 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>
* btrfs-progs: check: use on-stack path buffer in check_fs_root_v2David Sterba2016-12-14
| | | | | | | 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>