summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* btrfs-progs: subvol sync: fix reversed conditionDavid Sterba2015-10-07
| | | | | | | | | | | In my local change to 07cc891d1d9819d5cf0628af555e7727d289cf7b ("btrfs-progs: Simplify all-subvolumn-clean condition for wait_for_subvolume_cleaning") that reversed the meaning of the variable dirty -> clean, I made a mistake and broke 'subvol sync' that will not wait as expected and ends prematurely. Zhao Lei's original patch worked. CC: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: Print different error message if convert partly failed.Qu Wenruo2015-10-07
| | | | | | | | | | | | | When testing under libguestfs, btrfs-convert will never succeed to fix chunk map, and always fails. But in that case, it's already a mountable btrfs. So better to info user with different error message for that case. The root cause of it is still under investigation. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: optimize not to scan repeated fsid mount pointsAnand Jain2015-10-07
| | | | | | | | | | | | | | | | | | | | | | | | fsid can be mounted multiple times, with different subvolid. And we don't have to scan a mount point if we already have that in the scanned list. And thus nicely avoids the following warning with multiple subvol mounts on older kernel like 2.6.32 where BTRFS_IOC_GET_FSLABEL ioctl does not exist. ./btrfs fi show -m Label: none uuid: 31845933-611e-422d-ae6f-386e57ad81aa Total devices 2 FS bytes used 172.00KiB devid 1 size 3.00GiB used 642.38MiB path /dev/sdd devid 2 size 3.00GiB used 622.38MiB path /dev/sde warning, device 2 is missing warning devid 2 not found already warning, device 2 is missing warning devid 2 not found already Signed-off-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.2.2David Sterba2015-10-05
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix error checking in load_device_infoDavid Sterba2015-10-02
| | | | | | | | | | | load_device_info queries the FS_INFO ioctl and this may fail with EPERM on older kernels. The check did not verify the ioctl return value and incorrectly returned EPERM if it was previously stored in errno. This fixes 'btrfs fi usage' that will print the overall summary for all users (provided that the FS_INFO ioctl is already unprivileged). Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix double free during scanningDavid Sterba2015-10-02
| | | | | | | | | | If there are different devices mounted to the same directory we can run into double free issue in the scanning code and this can lead to a crash. The dev_info_arg buffer allocation get_fs_info might be skipped, eg. if the FS_INFO ioctl fails due to EPERM in older kernels. Reset the pointer before each loop starts. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: check: fix memset rangeSilvio Fricke2015-10-02
| | | | | Signed-off-by: Silvio Fricke <silvio.fricke@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tasks info->id is a pthread_t and should not set to -1Silvio Fricke2015-10-02
| | | | | Signed-off-by: Silvio Fricke <silvio.fricke@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Show detail error message when write sb failed in ↵Zhao Lei2015-10-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | write_dev_supers() fsck-tests.sh failed and show following message in my node: # ./fsck-tests.sh [TEST] 001-bad-file-extent-bytenr disk-io.c:1444: write_dev_supers: Assertion `ret != BTRFS_SUPER_INFO_SIZE` failed. /root/btrfsprogs/btrfs-image(write_all_supers+0x2d2)[0x41031c] /root/btrfsprogs/btrfs-image(write_ctree_super+0xc5)[0x41042e] /root/btrfsprogs/btrfs-image(btrfs_commit_transaction+0x208)[0x410976] /root/btrfsprogs/btrfs-image[0x438780] /root/btrfsprogs/btrfs-image(main+0x3d5)[0x438c5c] /lib64/libc.so.6(__libc_start_main+0xfd)[0x335e01ecdd] /root/btrfsprogs/btrfs-image[0x4074e9] failed to restore image /root/btrfsprogs/tests/fsck-tests/001-bad-file-extent-bytenr/default_case.img # # cat fsck-tests-results.txt === Entering /root/btrfsprogs/tests/fsck-tests/001-bad-file-extent-bytenr restoring image default_case.img failed to restore image /root/btrfsprogs/tests/fsck-tests/001-bad-file-extent-bytenr/default_case.img # Reason: I run above test in a NFS mountpoint, it don't have enouth space to write all superblock to image file, and don't support sparse file. So write_dev_supers() failed in writing sb and output above message. It takes me quite of time to know what happened, we can save these time by output exact information in write-sb-fail case. After patch: # ./fsck-tests.sh [TEST] 001-bad-file-extent-bytenr WARNING: Write sb failed: File too large disk-io.c:1492: write_all_supers: Assertion `ret` failed. ... # Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Increase running state's priority in stat outputZhao Lei2015-10-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Anthony Plack <anthony@plack.net> reported a output bug in maillist: title: btrfs-progs SCRUB reporting aborted but still running - minor btrfs scrub status report it was aborted but still runs to completion. # btrfs scrub status /mnt/data scrub status for f591ac13-1a69-476d-bd30-346f87a491da scrub started at Mon Apr 27 06:48:44 2015 and was aborted after 1089 seconds total bytes scrubbed: 1.02TiB with 0 errors # # btrfs scrub status /mnt/data scrub status for f591ac13-1a69-476d-bd30-346f87a491da scrub started at Mon Apr 27 06:48:44 2015 and was aborted after 1664 seconds total bytes scrubbed: 1.53TiB with 0 errors # ... Reason: When scrub multi-device simultaneously, if some device canceled, and some device is still running, cancel state have higher priority to be outputed in global report. So we can see "scrub aborted" in status line, with running-time keeps increased. Fix: We can increase running state's priority in output, if there is some device in scrub state, we output running state instead of cancelled state. Reported-by: Anthony Plack <anthony@plack.net> Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix is_block_device() return checksAnand Jain2015-10-02
| | | | | | | | | | | | | | it was highlighted to me is_block_device(), returns 1 if the file is a block device, < 0 in case of an error (eg: file not found) 0 otherwise This patch makes proper return checks at all the places where is_block_device() is used. Thanks to Goffredo. Signed-off-by: Anand Jain <anand.jain@oracle.com> Suggested-by: Goffredo Baroncelli <kreijack@inwind.it> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: make sure that is_block_device will return only 0/1David Sterba2015-10-02
| | | | | | The macro return nonzero, we'll test against 0/1 (or < 0). Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: utils: Check nodesize against featuresQu Wenruo2015-10-02
| | | | | | | | | | | Check nodesize against features, not only sectorsize. In fact, one of the btrfs-convert and mkfs differs in the nodesize check. This patch also provides the basis for later btrfs-convert fix. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: provide fail safe for BTRFS_IOC_GET_FSLABEL ioctlAnand Jain2015-10-02
| | | | | | | | | | | | | Old kernels before 3.9 do not provide ioctl BTRFS_IOC_GET_FSLABEL. So we need to provide a fail safe logic for btrfs-progs running on those kernel. In this patch when get_label_mounted() fails on the old kernel it will fail back to the old method and uses get_label_unmounted(), where it will read from the disk directly. Signed-off-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.2.1David Sterba2015-09-20
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: Add '-o loop' to mount command line in convert-tests.shZhao Lei2015-09-20
| | | | | | | | | | | | | | | To fix following bug: # ./convert-tests.sh [TEST] ext2 4k nodesize, btrfs defaults failed: mount /root/btrfsprogs/tests/test.img /root/btrfsprogs/tests/mnt # tail convert-tests-results.txt ... ############### mount /root/btrfsprogs/tests/test.img /root/btrfsprogs/tests/mnt mount: /root/btrfsprogs/tests/test.img is not a block device (maybe try `-o loop'?) failed: mount /root/btrfsprogs/tests/test.img /root/btrfsprogs/tests/mnt Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: docs: add option variants, defaults and versions to mount optionsDavid Sterba2015-09-15
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: cleanup, update function definitions to be ANSI conformantDavid Sterba2015-09-14
| | | | | | | | | | Sparse reports: warning: non-ANSI function declaration of function and we're using func(void) elsewhere. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: cleanup, mark more functions staticDavid Sterba2015-09-14
| | | | | | Reported by sparse. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: cleanup, make usage strings staticDavid Sterba2015-09-14
| | | | | | Reported by sparse. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: use calloc instead of malloc+memset for tree rootsOmar Sandoval2015-09-14
| | | | | Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: image: close all_devices at the endZhao Lei2015-09-11
| | | | | | | | Devices opened by check_mounted() in main() should closed before the exit of btrfs-image. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: image: don't create unused threadsZhao Lei2015-09-11
| | | | | | | | In case of creating an image without compression, we don't need to create unused threads. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: image: fix infinite looping with -t 0Zhao Lei2015-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bug: # btrfs-image -t0 -c9 /dev/sda6 /tmp/btrfs_image.img (hang) # btrfs-image -r -t0 /tmp/btrfs_image.img /dev/sda6 (hang) Reason: The program need to create at least 1 thread for compression/decompression. If the user specifies -t0, it overwrites the default value of 1, then the program really creates 0 thread, and ends up looping Fix: We can add a check, to make the program not to allow -t0 argument, but there is another problem: For example, on a node with 4 cpus: btrfs-image -c9 -t1: 4 threads (1 means use NR_CPUS) -c9 -t2: 2 threads -c9 -t3: 3 threads ... (-t1 has more threads than -t2 and -t3) So we change to use value of 0 as "use NR_CPUS threads", then: btrfs-image [no -t arg]: use NR_CPUS threads -t0: use NR_CPUS threads -t val: use val threads. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix cross stripe boundary checkDavid Sterba2015-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 854437ca3c228d8ab3eb24d2efc1c21b5d56a635 ("btrfs-progs: extent-tree: avoid allocating tree block that crosses stripe boundary") does not work for 64k nodesize. Due to an off-by-one error, all queries to check_crossing_stripes will return that all extents cross a stripe and this will lead to a false ENOSPC. This crashes later $ ./mkfs.btrfs -n 64k image ./mkfs.btrfs(btrfs_reserve_extent+0xb77)[0x417f38] ./mkfs.btrfs(btrfs_alloc_free_block+0x57)[0x417fe0] ./mkfs.btrfs(__btrfs_cow_block+0x163)[0x408eb7] ./mkfs.btrfs(btrfs_cow_block+0xd0)[0x4097c4] ./mkfs.btrfs(btrfs_search_slot+0x16f)[0x40be4d] ./mkfs.btrfs(btrfs_insert_empty_items+0xc0)[0x40d5f9] ./mkfs.btrfs(btrfs_insert_item+0x99)[0x40da5f] ./mkfs.btrfs(btrfs_make_block_group+0x4d)[0x41705c] ./mkfs.btrfs(main+0xeef)[0x434b56] Holger Hoffstätte reports that this also fixes false positives in case the nodesize is less than 64k. This happens when the node blocks end at the stripe boundary. Reviewed-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: close inode scan in copy_inodesZhao Lei2015-09-09
| | | | | | | | We need to call ext2fs_close_inode_scan to release resources from ext2fs_open_inode_scan. Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* 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>