summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* btrfs-progs: Fix wrong tree block alignment for unalianged block groupQu Wenruo2016-10-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 854437ca(btrfs-progs: extent-tree: avoid allocating tree block that crosses stripe boundary) introduces check for logical bytenr not crossing stripe boundary. However that check is not completely correct. It only checks if the logical bytenr and length agaist absolute logical offset. That's to say, it only check if a tree block lies in 64K logical stripe. But in fact, it's possible a block group starts at bytenr unaligned with 64K, just like the following case. Then btrfsck will give false alert. 0 32K 64K 96K 128K 160K ... |--------------- Block group A --------------------- |<-----TB 32K------>| |/Scrub stripe unit/| | WRONG UNIT | In that case, TB(tree block) at bytenr 32K in fact fits into the kernel scrub stripe unit. But doesn't fit into the pure logical 64K stripe. Fix check_crossing_stripes() to compare bytenr to block group start, not to absolute logical bytenr. Reported-by: Jussi Kansanen <jussi.kansanen@gmail.com> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: ioctl: fix build failure if BUILD_ASSERT is not definedDavid Sterba2016-10-25
| | | | | | | | | | | | The build fails if ioctl.h is included without kerncompat.h which defines BUILD_ASSERT, as reported. The proposed patches add kerncompat.h but I don't want to pull that header via ioctl.h, so the fix will provide an empty macro instead. Reported-by: Eric Sandeen <sandeen@redhat.com> Reported-by: Sergei Trofimovich <slyfox@gentoo.org> Reported-by: Mikhail Pukhlikov <cynede@gentoo.org> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: move btrfs_extref_hash() to hash.hLu Fengqi2016-10-25
| | | | | | | | Move btrfs_extref_hash() from inode-item.c to hash.h, so that the function can be called elsewhere. Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
* btrfs-progs: send: remove unnecessary codeTsutomu Itoh2016-10-25
| | | | | | | | | | Some unnecessary codes are deleted. - the setting of subvol is duplicated - read only check was already done by the previous loop Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dump-tree: fix crash on unrecognized tree idDavid Sterba2016-10-25
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: rename btrfs_scan_lblkid() to btrfs_scan_devices()Karel Zak2016-10-25
| | | | | | | | | It seems like bad idea to use a library name (lblkid) within generic function name. The currently used scanning library is implementation detail and this detail should be hidden for rest of the code. Signed-off-by: Karel Zak <kzak@redhat.com> Signed-off-by: David Sterba <dsterba@suse.cz>
* btrfs-progs: build: detect fiemap shared flag but don't fail buildDavid Sterba2016-10-25
| | | | | | | | | | | | | | The FIEMAP_EXTENT_SHARED fiemap flag was introduced in 2.6.33. If the headers do not provide the definition, the build will fail. The support of the fiemap sharing depends on the running kernel. There are still systems with 2.6.32 kernel headers but running newer versions. To support such environment, don't fail build, provide own defintion of the structure and detect if there's an old kernel in use in the relevant command (btrfs fi du). Reported-by: Abhay Sachan <lkp.abhay@gmail.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: detect version of running kernelDavid Sterba2016-10-25
| | | | | | Use the uname syscall and parse the string. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: volumes: Remove BUG_ON in raid56 write routineQu Wenruo2016-10-25
| | | | | | | | | | | | | | | | | | Remove various BUG_ON in raid56 write routine, including: 1) Memory allocation error Old codes allocates memory when code needs new memory in a loop, and catch the error using BUG_ON(). New codes allocates memory in a allocation loop first, if any failure is caught, freeing already allocated memories then throw -ENOMEM. 2) Write error Change BUG_ON() to correct return value. 3) Validation check Same as write error. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: rename raid6.c to raid56.cQu Wenruo2016-10-24
| | | | | | | | This allows us to put raid5 codes into that file other than creating a new raid5.c. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: test: Add image for quota verify stack overflowQu Wenruo2016-10-24
| | | | | | | | | | | | | For image with tree reloc tree, if its height is over level 2, the root node's backref will point to itself. It's valid for kernel, but quota verify code can't handle it and cause a infinite call, overflowing the stack. Add minimal image to reproduce the bug, as regression test. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> [ minor cleanups in test.sh ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: test: Add test image for btrfsck qgroup rescan detectionQu Wenruo2016-10-24
| | | | | | | | | | | Fixed by commit 7c646c538e74 btrfs-progs: qgroup: Fix regression leads to corrupted qgroup status. Add minimal test image for that fix. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> [ minor cleanups in test.sh ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Fix stack overflow for checking qgroup on tree reloc treeQu Wenruo2016-10-24
| | | | | | | | | | | | | | | | | For tree reloc tree whose level is >= 2, the root node's parent will point to itself. In this case it will make btrfsck overflow its stack and cause segfault. While for tree reloc tree, it doesn't affect qgroup and kernel can handle it well. So add tree reloc tree check for qgroup-verify.c and fix the bug. Test case will follow soon after I make a minimal image for it. Current xz ziped image is still over 10M for a 512M fs. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: image: fix compiler warningTsutomu Itoh2016-10-24
| | | | | | | | | | | | | | | | In v4.8-rc1, gcc 5.3.1 gives following warning. Fixed it. [CC] btrfs-image.o btrfs-image.c: In function 'flush_pending': btrfs-image.c:708:17: warning: 'start' may be used uninitialized in this function [-Wmaybe-uninitialized] header->bytenr = cpu_to_le64(start); ^ btrfs-image.c:927:6: note: 'start' was declared here u64 start; ^ Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert-test: Add test case for common inode flagsQu Wenruo2016-10-24
| | | | | | | | | Add a new test case to check if btrfs-convert copies common inode flags like append(a), immutable(i). Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> [ minor fixes ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: Convert ext inode flags to btrfs inode flagsQu Wenruo2016-10-24
| | | | | | | | | | | | | | | Before this patch, btrfs-convert never copy ext* inode flags to corresponding btrfs inode flags. This makes common flags like APPEND/SYNC/SYNCDIR/IMMUTABLE not copied to btrfs inode. This patch introduces ext2_convert_inode_flags() function to handle the convert, so btrfs-convert can copy as many inode flags as possible. Reported-by: Lakshmipathi.G <lakshmipathi.g@gmail.com> Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Make btrfs-debug-tree print all readable strings for inode flagsQu Wenruo2016-10-24
| | | | | | | | | | | | Before this patch, only 3 inode flags have readable string: NODATACOW, NODATASUM, READONLY. This patch will output all readable strings for remaining inode flags, making debug-tree tool more handy. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> [ minor adjustments ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Copy btrfs inode flags from kernel headerQu Wenruo2016-10-24
| | | | | | | | Btrfs-progs header lacks quite a lot inode flags. Copy them from kernel for later use. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Add fast,slow symlinks, fifo types to convert testLakshmipathi.G2016-10-24
| | | | | | Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in> [ fix root helper use in fast_symlink ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: btrfs-debugfs: cleanup unused variables reported by pylintLakshmipathi.G2016-10-24
| | | | | Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in> Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: test: add default ioctl-test buildDavid Sterba2016-10-24
| | | | | | | | Add another target that'll use default compiler options, eg. if we don't know the bitness of the architecture or gcc does not recognize the -m32/-m64 options. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: make the ioctl-test actually usefulDavid Sterba2016-10-24
| | | | | | | | Enhance the test to verify ioctl uniqueness, compare the defined values against the hardcoded expected values, and take care of the 32bit/64bit compatibility workarounds. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: ioctl: add 64bit compat for SENDDavid Sterba2016-10-24
| | | | | | | | | | | | | | | | The ioctl value of SEND will be different on 32bit userspace and 64bit kernel due to different pointer type width, that unfortunatelly made it into the structure definition. To maintain backward compatibility, we must do it in the 64bit->32bit way, because we don't have the kernel side workardound like SET_RECEIVED_SUBVOL has. Changing value of SEND would then break existing users of the raw ioctl. The compatibility structure and ioctl should not be used, exists for documentation, and testing. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: ioctl: add 32bit compat for SET_RECEIVED_SUBVOLDavid Sterba2016-10-24
| | | | | | | | | | | | The ioctl value of SET_RECEIVED_SUBVOL will be different on 32bit userspace and 64bit kernel. This is transparently handled on the kernel side. We now define the same structure so we can verify the ioctl value. The defined structure and ioctl should not be used. It is exists only for testing purposes, documenting the mess and as a warning for the future. Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.8.1David Sterba2016-10-12
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: update CHANGES for v4.8.1David Sterba2016-10-12
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: ioctl: make build-time structure size checks optionalDavid Sterba2016-10-10
| | | | | | | | | Temporarily make the build checks optional. The structure sizes could change on arches due to alignment requirements or padding inserted into the structures. We need more extensive tests to make sure we'd not break ioctls. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: fix printf format of sizeof on 32bit buildDavid Sterba2016-10-10
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: add script to help build coverageDavid Sterba2016-10-10
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: Fix warning_trace compile error if backtrace is disabledQu Wenruo2016-10-10
| | | | | | | | | | | If we disable backtrace, btrfs-progs can't be compiled since we don't have warning_trace defined. Fix by move it out of #ifndef BTRFS_DISABLE_BACKTRACE block. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> [ move warning_trace to the right place ] Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: build: add explicit option separator to rm commandsDavid Sterba2016-10-10
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* Btrfs progs v4.8David Sterba2016-10-05
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: update CHANGES for v4.8David Sterba2016-10-05
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: add build-time checks for size of ioctl structuresDavid Sterba2016-10-05
| | | | | | | All structures that become part of ioctl definition must never change size. Add the build time checks for that. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: mkfs: fix warning for printf format on 32bitDavid Sterba2016-10-05
| | | | | | | Compiler complains about nlink_t and %ld format on 32bit build. Add typecast and fix the format. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: kerncompat: add build-time assertion supportDavid Sterba2016-10-05
| | | | | | | Macro to verify compile-time conditions, like sie of structures or types. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: build: add alias for check testsDavid Sterba2016-10-05
| | | | | | $ make test-check" Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: kerncompat: call abort at the end of assert_traceDavid Sterba2016-10-05
| | | | | | | The assert* helpers should not exit normally, mimick the behaviour of the std library assert. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: kerncompat: make WARN_ON more verboseDavid Sterba2016-10-05
| | | | | | | Curretnly WARN_ON would crash but that's not it's purpose. Add helper that prints the warning, optionally with trace. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: teach run_mayfail about sigabrtDavid Sterba2016-10-05
| | | | | | Mayfail helper should stop when we encoutner an abort. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: dump-super: print chunks after validationDavid Sterba2016-10-05
| | | | | | | The fuzz test 005-simple-dump-super hits a crash, because we print the chunks too early. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: convert: add new callback to check stateDavid Sterba2016-10-05
| | | | | | Make the hardcoded ext2 call to a generic per-fs callback. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: rename __setup_root and change to return voidDavid Sterba2016-10-05
| | | | | | Exported function should use a prefix. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: don't treat segfault as ignorable errorDavid Sterba2016-10-05
| | | | | | | | Some fuzzed images cause various tools to crash but the mayfail helper would not recognize that. We don't mind if the utility failes but it must not crash. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: tests: split test 004 to separate testsDavid Sterba2016-10-05
| | | | | | Makes testing specific tool easier. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: don't access freed memory in btrfs_close_devicesDavid Sterba2016-10-05
| | | | | | | Caught by ASAN, as we don't access fs_devices directly, there's no null deref but 0x30 is still wrong. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: chunk-recover: handle duplicate cache entriesDavid Sterba2016-10-05
| | | | | | Triggered by fuzzed image bko-155621-bad-block-group-offset.raw . Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: print value when assertion failsDavid Sterba2016-10-05
| | | | Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: image: drop useless bug_onDavid Sterba2016-10-05
| | | | | | | The callers touch 'target', no point checking it inside restore_metadump again. Signed-off-by: David Sterba <dsterba@suse.com>
* btrfs-progs: image: return negativer error from all paths in mdrestore_initDavid Sterba2016-10-05
| | | | Signed-off-by: David Sterba <dsterba@suse.com>