summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* btrfs-progs: kerncompat: simplify warning_traceDavid Sterba2017-01-25
| | | | | | The value of assertion is always set. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: kerncompat: disconnect assert and warning messagesDavid Sterba2017-01-25
| | | | | | | | 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>
* btrfs-progs: kerncompat: pass exact condition value from ASSERTDavid Sterba2017-01-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: kerncompat: add separate trace print for BUG_ONDavid Sterba2017-01-25
| | | | | | | 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>
* btrfs-progs: Fix disable backtrace assert errorQu Wenruo2017-01-25
| | | | | | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: quota: fix printing during wait modeJeff Mahoney2017-01-25
| | | | | | | | | | | | | | | 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>
* btrfs-progs: sanitize - Use correct source for memcpyGoldwyn Rodrigues2017-01-25
| | | | | | | | | 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>
* btrfs-progs: check: fix false alert on dropped leaf in lowmem modeQu Wenruo2017-01-25
| | | | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: tests: 005-qgroup-showDavid Sterba2017-01-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: qgroup show: refine error messagesDavid Sterba2017-01-25
| | | | | | | | | | | | | 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>
* btrfs-progs: qgroups show: clean up errno passingDavid Sterba2017-01-25
| | | | | | We should use return value for errors, not errno. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: fix typo in btrfs-subvolumeEsteve Fernandez2017-01-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: corrupt-block: Include more inode fieldsLakshmipathi.G2017-01-25
| | | | | Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: corrupt-block: Include inode nlink fieldLakshmipathi.G2017-01-25
| | | | | Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: defrag: remove v1 ioctl supportDavid Sterba2017-01-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: defrag: force using v2 defrag ioctl and make default 32M ↵David Sterba2017-01-25
| | | | | | | | | | | | 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>
* btrfs-progs: Fix spelling/typos in user-facing stringsNicholas D Steeves2017-01-25
| | | | | Signed-off-by: Nicholas D Steeves <nsteeves@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: print device name while trimmingDavid Sterba2017-01-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: enable negative numbers for unallocated device spaceDavid Sterba2017-01-25
| | | | | | | | | | | | | | | 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>
* btrfs-progs: make negative number pretty printing optionalDavid Sterba2017-01-25
| | | | | | | 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>
* btrfs-progs: utils: negative numbers are more plausible than sizes over 8 EiBZygo Blaxell2017-01-25
| | | | | | | | | | | | | | | | | 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>
* btrfs-progs: check: get the highest inode for lost+foundGoldwyn Rodrigues2017-01-25
| | | | | | | | | | | | | 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>
* Btrfs progs v4.9David Sterba2016-12-23
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: update CHANGES for v4.9David Sterba2016-12-23
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert-test: trigger chunk allocation after convertQu Wenruo2016-12-21
| | | | | | | | | 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>
* 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>