summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* btrfs-progs: remove extra newline from messagesDavid Sterba2016-12-14
| | | | | | The common message helpers add the newline. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: check: fix NULL pointer dereference for possible memory ↵Qu Wenruo2016-12-14
| | | | | | | | | | | | | | | 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>
* btrfs-progs: fsck: Fix patch allocation check and leak in check_fs_first_inodeQu Wenruo2016-12-14
| | | | | | | | | | | | 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>
* btrfs-progs: check: Enhance leaf traversal function to handle missing inode itemQu Wenruo2016-12-14
| | | | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: check: skip shared node or leaf check for low_memory modeWang Xiaoguang2016-12-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: check: fix the return value bug of cmd_check()Lu Fengqi2016-12-14
| | | | | | | | | | | | 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>
* btrfs-progs: check: introduce low_memory mode fs_tree checkLu Fengqi2016-12-14
| | | | | | | | | | 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>
* btrfs-progs: check: introduce function to check root refLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: check: introduce function to check fs rootLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: check: introduce function to check inode itemLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: check: introduce function to check file extentLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: check: introduce function to check dir_itemLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: check: introduce function to find inode_refLu Fengqi2016-12-14
| | | | | | | | | | 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>
* btrfs-progs: check: introduce function to check inode_extrefLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: check: introduce function to check inode_refLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: check: introduce function to find dir_itemLu Fengqi2016-12-14
| | | | | | | | | 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>
* btrfs-progs: volumes: Use new raid5_gen_result to calculate raid5 parityQu Wenruo2016-12-14
| | | | | | | 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>
* btrfs-progs: raid56: Introduce new function to calculate raid5 parity or ↵Qu Wenruo2016-12-14
| | | | | | | | | | 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>
* Btrfs progs v4.8.5David Sterba2016-11-30
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: update CHANGES for v4.8.5David Sterba2016-11-30
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: test: fix static build of library-testDavid Sterba2016-11-30
| | | | | | | 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>
* btrfs-progs: tests: add correct rpath to library-testDavid Sterba2016-11-30
| | | | | | | | 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>
* btrfs-progs: tests: end of stream conditionsDavid Sterba2016-11-30
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: receive: properly detect end of stream conditionsDavid Sterba2016-11-30
| | | | | | | | | 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>
* btrfs-progs: docs: fix typo in btrfs-man5David Sterba2016-11-30
| | | | | | Reported via IRC. Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.8.4David Sterba2016-11-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: update CHANGES for v4.8.4David Sterba2016-11-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: build: link against local librariesDavid Sterba2016-11-24
| | | | | | | | 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>
* btrfs-progs: test: extend library-test coverageDavid Sterba2016-11-24
| | | | | | | 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>
* btrfs-progs: move lookup_path_rootid to library utilsDavid Sterba2016-11-24
| | | | | | | | | | | 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>
* btrfs-progs: print-tree: fix format string on 32bitDavid Sterba2016-11-24
| | | | | | We're passing a size_t, use the right format specifier. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: move bitops.h to kernel-libDavid Sterba2016-11-24
| | | | | | Forgotten when the rest got moved. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: deprecate standalone btrfs-show-superDavid Sterba2016-11-24
| | | | | | The functionality is now provided by 'inspect dump-super'. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: deprecate standalone btrfs-calc-sizeDavid Sterba2016-11-24
| | | | | | The functionality is now provided by 'inspect tree-stats'. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: move btrfs-image sources to own directoryDavid Sterba2016-11-24
| | | | | | | 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>
* btrfs-progs: tests: add support for additional command argumentsDavid Sterba2016-11-23
| | | | | | | | | 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>
* btrfs-progs: tests: more variable quoting in common scriptsDavid Sterba2016-11-23
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: drop redundant test for rwx number validityDavid Sterba2016-11-23
| | | | | | | 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>
* btrfs-progs: test: fix how to make test files in fsck-tests 013Tsutomu Itoh2016-11-23
| | | | | | | | | | | | | | | | | | | | | | 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>
* btrfs-progs: Update README and other docsDavid Sterba2016-11-23
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: check: fix missing newlinesOmar Sandoval2016-11-23
| | | | | | | | | 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>
* btrfs-progs: qgroup: fix error in ASSERT condition expressionTsutomu Itoh2016-11-23
| | | | | | | | 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>
* btrfs-progs: tests: add fallback to current directory for check_all_imagesDavid Sterba2016-11-23
| | | | | Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: test: fix error of test target of MakefileTsutomu Itoh2016-11-23
| | | | | | | 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>
* btrfs-progs: document space_cache=v2 more thoroughlyOmar Sandoval2016-11-23
| | | | | Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: implement btrfs check --clear-space-cache v2Omar Sandoval2016-11-23
| | | | | | | Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: Omar Sandoval <osandov@fb.com> [ adjusted error messages ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: add btrfs_clear_free_space_tree() from the kernelOmar Sandoval2016-11-23
| | | | | | Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: add OPEN_CTREE_INVALIDATE_FST flagOmar Sandoval2016-11-23
| | | | | | | | | | If this flag is passed to open_ctree(), we'll clear the FREE_SPACE_TREE_VALID compat_ro bit. The kernel will then reconstruct the free space tree the next time the filesystem is mounted. Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: format FREE_SPACE_TREE{,_VALID} nicely in dump-superOmar Sandoval2016-11-23
| | | | | Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: add the FREE_SPACE_TREE_VALID compat_ro bit definitionOmar Sandoval2016-11-23
| | | | | | | This is just the definition; we don't support it yet. Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>