summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* 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>
* btrfs-progs: check: use on-stack path buffer in check_fs_first_inodeDavid 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: receive: rename receive context variableDavid Sterba2016-12-14
| | | | | | Do not use single letter variable name. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: make incompat bit wrappers more compactDavid Sterba2016-12-14
| | | | | | Use the same macro tricks as in kernel code. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: send: rename thread callback to read data from kernelDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: send: use splice syscall instead of read/write to transfer bufferDavid Sterba2016-12-14
| | | | | | | | 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>
* btrfs-progs: use symbolic name for first inode number when searchingDavid Sterba2016-12-14
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* 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>