summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* btrfs-progs: Avoid uninitialized data in output of btrfs-convertZhao Lei2015-09-09
| | | | | | | | The sequence, transid and reserved fields of inode were writen to disk with uninitizlized value, this patch fixes it. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix typo in set/get of btrfs_inode_item::sequenceZhao Lei2015-09-09
| | | | | | | | s/generation/sequence/ for BTRFS_SETGET_STACK_FUNCS(stack_inode_sequence, ...) Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: add crafted and fuzzed imagesDavid Sterba2015-09-09
| | | | | | | | | A collection of several images that were produced in a non-standard way and cause various errors in check or image tools. They do not fit into the fsck tests as we're not able to repair any of them, but the tools should not crash or do out-of-bounds access. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: makefile: drop u option from ar invocationArnd Hannemann2015-09-08
| | | | | | | | | | | | | | | | | | | In newer distros (ubuntu 15.10, fedora rawhide) the binutils ar uses the new D flag per default to build deterministic binaries. Without this patch the following warning is issued, when building btrfs-progs: [AR] libbtrfs.a /usr/bin/ar: `u' modifier ignored since `D' is the default (see `U') For libtrfs.a performance benefit of the u option can be neglected, so drop the u option and silence the warning. In the future one might want to explicitly add the D option anyway. Signed-off-by: Arnd Hannemann <arnd@arndnet.de> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: INSTALL: enhance build instructionsDavid Sterba2015-09-07
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: autogen: add check for pkg-configDavid Sterba2015-09-07
| | | | | | | Configure uses pkg-config, this should be at least checked at the autogen time. Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.2David Sterba2015-09-03
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: btrfstune: remove unnecessary fsid checksDavid Sterba2015-09-02
| | | | | | | | | The new fsid members were switched from dynamically allocated to on-stack in e737a9d56b2cec644f1462bf540cb78f858d146d ("btrfs-progs: btrfstune: rework change_uuid"), we don't have to do the checks in the helpers. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: rework checks of label sizeDavid Sterba2015-09-02
| | | | | | | | | | | Coverity complains that the fslabel might be longer than the superblock buffer, down in do_convert. The label is at most 255 bytes, terminated by zero. Use buffers of the right size. Resolves-coverity-id: 1320911 Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: doc: document btrfs-select-super(8)Adam Borowski2015-09-02
| | | | | Signed-off-by: Adam Borowski <kilobyte@angband.pl> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: remove unused argument from block_group_free_all_extentZhao Lei2015-09-02
| | | | | Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Fix some spelling typos in chunk-recover.cZhao Lei2015-09-02
| | | | | | | Only comment, not big issue. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: stat info for btrfs rescue chunk-recoverZhao Lei2015-09-02
| | | | | | | | | | | | | | | | | | | chunk-recover need to use many many time in scan_devices(), and no output in screen: # btrfs rescue chunk-recover /dev/sda6 (no output here, but need long time) To notice user that "the command is not hang", this patch add dynamic updated stat information in above period: # btrfs rescue chunk-recover /dev/sda6 Scanning: DONE in dev[0], 19998441472 in dev[1], DONE in dev[2] (until) Scanning: DONE in dev0, DONE in dev1, DONE in dev2 Check chunks successfully with no orphans Recover the chunk tree successfully. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Use long type to get thread's return valueZhao Lei2015-09-02
| | | | | | | | | | | pthread use void * to save return status, we can use this pointer to save our return value, but we need to keep the same length. This patch move to use long type variable to save return value of our thread, to avoid potential invalid memory access. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: use for loop for scan_devicesZhao Lei2015-09-02
| | | | | | | for() is more suitable than while() in this code block. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: handle errors in btrfs_wipe_existing_sbDavid Sterba2015-09-02
| | | | | | | | | Failure during superblock wiping is not always a hard error as we're going to overwrite it anyway but it may catch some errors earlier. The error message is not very descriptive though, because we don't get back much information from blkid. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: use on-stack buffer for superblockDavid Sterba2015-09-02
| | | | | | | In update_disk_super_on_device,the buffer size is small, allocate it onstack and get rid of one error path. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: image: better error handling in update_disk_super_on_deviceDavid Sterba2015-09-02
| | | | | | Return an error code instead of exitting, more verbose messages. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Use mount_test_dev for misc-tests/007-subvolume-syncZhao Lei2015-09-01
| | | | | | | So this test can support both block device and loop device simply. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Fix mount fail of 013-extent-tree-rebuildZhao Lei2015-09-01
| | | | | | | | | | | | | | | | | | | mount command in old system can not add "-o loop" option automatically for loop device, and make following test failed: # ./fsck-tests.sh ... [TEST] 013-extent-tree-rebuild failed: mount /data/btrfsprogs/tests/test.img /data/btrfsprogs/tests/mnt test failed for case 013-extent-tree-rebuild Considering that $TEST_DEV can be block or loop device, we need determine our mount option in a condition for both case. This patch create a wrapper function for above request, to solve current problem in 013-extent-tree-rebuild, and support similar request in future. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: introduce test dev mount helpersZhao Lei2015-09-01
| | | | | | | | | | | | | mount command in old system can not add "-o loop" option automatically for a loop device, and make following test 013-extent-tree-rebuild fail. Considering that $TEST_DEV can be block or loop device, we need to determine our mount option in a condition for both case. Introduce a wrapper that will add the loop options if needed. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Use --no-same-owner option for tarZhao Lei2015-09-01
| | | | | | | | | | | | | | | | | | | | | | Some test failed in my nfs dir: ... [TEST] 006-bad-root-items tar: test.img: Cannot change ownership to uid 1000, gid 1000: Invalid argument tar: Exiting with failure status due to previous errors failed to extract default_case.tar.xz test failed for case 006-bad-root-items It is because the image file's owner is: # tar tvf default_case.tar.xz -rw-r--r-- fdmanana/fdmanana 2147483648 2014-10-17 17:59 test.img And make tar failed in chown in nfs. It is not a big issue because we don't use nfs commonly, but extract the image file with ownership of current user will be a better choice. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: makefile: add support for additional build flagsDavid Sterba2015-09-01
| | | | | | | Allow fine tuned build options via EXTRA_CFLAGS and EXTRA_LDFLAGS variables. Useful for additional debugging flags or warnings etc. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: use android compat headerDavid Sterba2015-09-01
| | | | | | Applies to sources where pthreads are used. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: add compat header for androidDavid Sterba2015-09-01
| | | | | | Provide stubs and compat macros for android build. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Add Android build mk filekenneth.kang2015-09-01
| | | | | | | | | | | | | | | Add Android.mk to use btrfs on android device. There are still outstanding problems and build support is incomplete: 1) phread_cancel was changed to pthread_kill due to android didn't support that. 2) This module needs lzo library on android/external folder. 3) blkid library doesn't support fully. So have to use -f option to work. Signed-off-by: kenneth.kang <kenneth.kang@lge.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Simplify all-subvolumn-clean condition for ↵Zhao Lei2015-09-01
| | | | | | | | | | | | | wait_for_subvolume_cleaning Instead of using a dirty-subvolumn-counter in old code, this patch turn to use a simple and direct way: If (not dirty-subvolumn found in current loop) { return all_clean; } Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Simplify memory allocation for enumerate_dead_subvolsZhao Lei2015-09-01
| | | | | | | | | | | No need prepare memory for enumerate_dead_subvols() in caller, and pass additional argument for allocated length. Just do every thing inside enumerate_dead_subvols(), it will not increase malloc count, but make code simple. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Fix wrong return value of wait_for_subvolume_cleaning()Zhao Lei2015-09-01
| | | | | | | | | | | | | | | | Reproduce: # btrfs subvolume sync /mnt/btrfs Subvolume id 323 is gone # echo $? 1 # Reason: wait_for_subvolume_cleaning() return !0 in right case, because value of ret is set to "is subvolume clean" state before return. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Fix infinite loop of btrfs subvolumn syncZhao Lei2015-09-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can trigger the bug by following operation: (no wait between commands 3~5) btrfs subvolume create /mnt/btrfs/mysubvol btrfs subvolume snapshot /mnt/btrfs/mysubvol /mnt/btrfs/mysubvol_snap btrfs subvolume delete /mnt/btrfs/mysubvol_snap btrfs subvolume delete /mnt/btrfs/mysubvol btrfs subvolume sync /mnt/btrfs The last command will not exit. Reason: List of "deleted subvolumes" are not currectly set. It caused by a typo of value assign, in detail: *ids[idx] = sh->offset; should be: (*ids)[idx] = sh->offset; So only first element is set to right memory address. If there are multiple "deleted subvolumes", program will keep wait. Above typo also caused some segment fault in my test. This patch fixed above bug. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix memory leak in btrfs-convert main()Byongho Lee2015-09-01
| | | | | | | | | | | | | | | | In btrfs-convert main(), strdup() allocates memory to fslabel but that memory is not freed. We could fix it by adding free() calls to every return point, but that would make the code messy because there are several return paths. So I fix it by changing the code using strdup() with local array and strncpy(). And btrfs-convert main() guarantees that string length of fslabel is not to exceed 'BTRFS_LABEL_SIZE', so it's enough to use strcpy() instead of strncpy() to copy fslabel in do_convert(). Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: umount TEST_MNT in clean-tests.shZhao Lei2015-09-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a testcase failed, we can't run it(or other tests needs mount) again, # ./misc-tests.sh 007 [TEST] 007-subvolume-sync failed: fail test failed for case 007-subvolume-sync # ./misc-tests.sh 007 [TEST] 007-subvolume-sync failed: mount /root/btrfs-progs/tests/test.img /root/btrfs-progs/tests/mnt test failed for case 007-subvolume-sync This patch add "umount $TEST_MNT" to clean-tests.sh, to let user clean mountpoint easily. After patch: # ./misc-tests.sh 007 [TEST] 007-subvolume-sync failed: fail test failed for case 007-subvolume-sync # # clean-tests.sh # # ./misc-tests.sh 007 [TEST] 007-subvolume-sync failed: fail test failed for case 007-subvolume-sync Suggested-by: David Sterba <dsterba@suse.cz> Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> [added sudo helper to umount] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Introduce init_env to initialize common env variantZhao Lei2015-09-01
| | | | | | | | | | | | | | | | | | | | | | | For example, $TEST_DIR is common used in severial tests, and have duplicated code for initialize. These duplicated code not only benifits harddisk vendor, but have inconsistent details, as: convert-tests.sh: lack of mkdir fsck-tests/012-leaf-corruption/test.sh: unnecessary mkdir fsck-tests/013-extent-tree-rebuild/test.sh: unnecessary init misc-tests/XXX ... And severial error message: _fail "unable to create mount point on $TEST_MNT" _fail "failed to create mount point" ... This patch move initizlizaton of $TEST_DIR to common init_env(), to avoid above problem, and init_env() can be used to add more things in future. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Use common unit parser for btrfs filesystem commandZhao Lei2015-09-01
| | | | | | | | | | Move to use get_unit_mode_from_arg() for cmds-filesystem.c, to make "btrfs filesystem df/show/usage"'s unit argument same. Also have cleanup effect: 19 insertions(+), 181 deletions(-) Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Use common unit parser for btrfs qgroup commandZhao Lei2015-09-01
| | | | | | | | | Move to use get_unit_mode_from_arg() for btrfs qgroup command, to make "btrfs qgroup show"'s unit argument same with other tools. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Use common unit parser for btrfs device commandZhao Lei2015-09-01
| | | | | | | | | Move to use get_unit_mode_from_arg() for cmds-device.c, to make "btrfs device usage"'s unit argument same with other tools. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Introduce get_unit_mode_from_arg for common useZhao Lei2015-08-31
| | | | | | | | | | | | | | | | | | We are using separate code for parsing unit mode in current code, better to use common function. This patch introduces a common function to specify units as arguments and a common help message, to make every tool in btrfs having same unit argument. The benefits are: 1: Unify current tool's arguments for unit 2: Make tools in future easy to implement such argument 3: Changes (enhancement) in common function have effect on all relative tools Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Introduce subvolume sync testZhao Lei2015-08-31
| | | | | | | | | | | | Current code have following bug for subvolume sync: 1: If there are more than 1 subvolume to sync, the program will infinitely loop. 2: return !0 in exit This patch add misc-tests/007-subvolume-sync for above case. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: add memory allocation fail check in btrfs_add_to_fsid()Byongho Lee2015-08-31
| | | | | | | | | | In btrfs_add_to_fsid(), strdup() allocates memory to device->name, but the return value is not checked. So add the return value check and error handling code. And clean-up error handling code for ENOMEM case. Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix memory leak in btrfs-map-logical main()Byongho Lee2015-08-31
| | | | | | | | | In btrfs-map-logical main(), strdup() allocates memory to output_file, but that memory is not freed. So add missing free() calls before return. Signed-off-by: Byongho Lee <bhlee.kernel@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: use btrfs_open_dir for btrfs device commandZhao Lei2015-08-31
| | | | | | | | | | | | | | | | | | | | | | | | We can use btrfs_open_dir() to check whether the target dir is under btrfs mount point before openning, instead of checking it in kernel through ioctl, and returning a fuzzy error message. Before patch: # (/mnt/tmp is not btrfs mountpoint) # # btrfs device add -f /dev/sda13 /mnt/tmp ERROR: error adding the device '/dev/sda13' - Inappropriate ioctl for device # After patch: # btrfs device add -f /dev/sda13 /mnt/tmp ERROR: not btrfs filesystem: /mnt/tmp # Similar fix for device remove and device usage. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> [renamed to btrfs_open_dir] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Introduce btrfs_open_dir wrapperZhao Lei2015-08-31
| | | | | | | | | | | This patch introduce open_btrfs_dir() to open a dir in btrfs filesystem. It can be used for several tools in btrfs-progs. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> [renamed from open_btrfs_dir, adjusted error messages] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: remove code for setup mntid in cmd_subvol_showZhao Lei2015-08-31
| | | | | | | | We don't need to use value of mntid in cmd_subvol_show(), no need to get its value. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix use after free in replace startDavid Sterba2015-08-31
| | | | | | | | Commit "btrfs-progs: Add further checks to btrfs replace start command" accesses device size just after its memory is freed. Resolves-coverity-id: 1320425 Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: add newline to some error messagesTsutomu Itoh2015-08-31
| | | | | | | | | Added a missing newline to some error messages. Also printf() was changed to fprintf(stderr) for error messages. Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com> Reviewed-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: close all fs_devices before exit in some commandsZhao Lei2015-08-31
| | | | | | | | | | | | | | | | | | mkfs creates more than one fs_devices in fs_uuids. 1: one is for file system being created 2: others are created in test_dev_for_mkfs in order to check mount point test_dev_for_mkfs()-> ... -> btrfs_scan_one_device() Current code only closes 1, and this patch also closes in case 2. Similar problem exist in other tools, eg.:: cmd-check.c: the function is: cmd_check()->check_mounted()-> ... -> btrfs_scan_one_device() ... Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Introduce btrfs_close_all_devices helperZhao Lei2015-08-31
| | | | | | | | If there is more than one fs_devices in fs_uuids list (like mkfs.btrfs does), we need close them all before exit. Add a helper for that. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: find-root: fix a bug that will cause wrong resultQu Wenruo2015-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | [BUG] btrfs-find-root may not output desire result, as due to search_extent_cache() may return a result that doesn't cover the desired range, generation cache can be screwed up if higher generation tree root is found before lower generation tree root. For example: ======= ./btrfs-find-root /dev/sda6 -a Superblock thinks the generation is 8 Superblock thinks the level is 0 adding bytenr: 4194304, gen: 8 <<< Debug output adding bytenr: 24715264, gen: 7 <<< gen is 7 at read_tree_block time Well block 4194304(gen: 8 level: 0) seems good, and it matches superblock Well block 24715264(gen: 8 level: 0) seems good, and it matches superblock <<< But its gen is wrong at result output time ======= [Fix] Add a new check to make sure the search_extent_cache() is returning the desired result. Reported-by: Marc Merlin <marc@merlins.org> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: find-root: Output matched root when searching all rootsQu Wenruo2015-08-31
| | | | | | | | | | | | | | | | | | [Bug] When given '-a' option, btrfs-find-root will output all possible tree roots but the exact matched one. [Reason] Result printing skipes the exact match one, as it will normally be shown before the alternative ones. But when '-a' is given, that's not the case. [Fix] Just show the exact match one for search all case. Reported-by: Marc Merlin <marc@merlins.org> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: unified error handling in print_replace_statusZhao Lei2015-08-31
| | | | | | | | | | | | | | Current code of print_replace_status() mixed stdout and stderr in error case, output a error string to stderr without "\n", then output "\n" to stdout to end the line. This patch fixed above problem by using unified error handle way for 3 type of errors in print_replace_status(). Also include some small logic cleanup. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>