summaryrefslogtreecommitdiff
path: root/kerncompat.h
Commit message (Collapse)AuthorAge
* Merge branch 'cov-fixes-v1-integration-20130201' of ↵Chris Mason2013-02-06
|\ | | | | | | http://git.zabbo.net/cgit/btrfs-progs into merged
| * btrfs-progs: use ftw() unstead of system("du")Zach Brown2013-02-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | size_sourcedir() uses shockingly bad code to try and estimate the size of the files and directories in a subtree. - Its use of snprintf(), strcat(), and sscanf() with arbitrarily small on-stack buffers manages to overflow the stack a few times when given long file names. $ BIG=$(perl -e 'print "a" x 200') $ mkdir -p /tmp/$BIG/$BIG/$BIG/$BIG/$BIG $ mkfs.btrfs /tmp/img -r /tmp/$BIG/$BIG/$BIG/$BIG/$BIG *** stack smashing detected ***: mkfs.btrfs terminated - It passes raw paths to system() allowing interpreting file names as shell control characters. $ mkfs.btrfs /tmp/img -r /tmp/spacey\ dir/ du: cannot access `/tmp/spacey': No such file or directory du: cannot access `dir/': No such file or directory - It redirects du output to "temp_file" in the current directory, allowing overwriting of files through symlinks. $ echo hi > target $ ln -s target temp_file $ mkfs.btrfs /tmp/img -r /tmp/somedir/ $ cat target 3 /tmp/somedir/ This fixes the worst problems while maintaining -r functionality by tearing out the system() code and using ftw() to walk the source tree and sum up st.st_size. Signed-off-by: Zach Brown <zab@redhat.com>
* | Merge branch 'for-chris' of git://repo.or.cz/btrfs-progs-unstable/devel into ↵Chris Mason2013-02-06
|\| | | | | | | | | | | | | | | | | raid56 Conflicts: ctree.h Signed-off-by: Chris Mason <chris.mason@fusionio.com>
| * btrfs-progs: fix unaligned accesses v2Ben Peddell2013-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gcc optimizes out the memcpy calls at -O2 and -Os. Replacing memcpy with memmove does't work - gcc treats memmove the same way it treats memcpy. This patch brings in {get|put}_unaligned_le{16|32|64} (using the packed struct method), and uses them in the failing get/set calls. On architectures where unaligned accesses are cheap, these unaligned macros should be optimized out by the compiler. Signed-off-by: Ben Peddell <klightspeed@killerwolves.net>
* | btrfs-progs: include kerncompat.h in raid6.c, define __attribute_const__Eric Sandeen2013-02-03
|/ | | | | | | | | | | | | | | raid6.c was failing to build for Goffredo and me due to __attribute_const__ being undefined. Define it in kerncompat.h and include that; this also makes sure BITS_PER_LONG is defined for raid6.c, prior to this it was not defined, at least in my build. Finally, redefine BITS_PER_LONG in a way that it can be tested in the preprocessor macro. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
* Btrfs-progs: Fix compiler warnings on PPC64Wade Cline2013-01-17
| | | | | | | | | | | | | | | | The kernel uses unsigned long long for u64, but PPC64 uses unsigned long by default. This results in compilation warnings such as: print-tree.c:333: warning: format '%llu' expects type 'long long unsigned int', but argument 4 has type 'u64' To fix this, the macro __KERNEL__ needs to be defined before including the file <asm/types.h>. This can be done by defining the macro in "kerncompat.h" and making it the first included file in the relevant header files; this fixes the compiler warnings on PPC64. Reviewed-by: David Sterba <dsterba@suse.cz> Signed-off-by: Wade Cline <clinew@linux.vnet.ibm.com>
* multidevice support for check_mountedAndi Drebes2010-09-23
| | | | | | | | | | | | | | Check_mount() should also work with multi device filesystems. This patch adds checks that allow to detect if a file is a device file used by a mounted single or multi device btrfs or if it is a regular file used by a loopback device that is part of a mounted single or multi device btrfs. The single device checks also work for non-btrfs filesystems. This might be helpful to prevent users from running btrfs programs (e.g. mkfs.btrfs) accidentally on a filesystem used somewhere else. Signed-off-by: Andi Drebes <lists-receive@programmierforen.de>
* Mixed back reference (FORWARD ROLLING FORMAT CHANGE)Chris Mason2009-06-08
| | | | | | | | | | | | | | | | | This commit introduces a new kind of back reference for btrfs metadata. Once a filesystem has been mounted with this commit, IT WILL NO LONGER BE MOUNTABLE BY OLDER KERNELS. The new back ref provides information about pointer's key, level and in which tree the pointer lives. This information allow us to find the pointer by searching the tree. The shortcoming of the new back ref is that it only works for pointers in tree blocks referenced by their owner trees. This is mostly a problem for snapshots, where resolving one of these fuzzy back references would be O(number_of_snapshots) and quite slow. The solution used here is to use the fuzzy back references in the common case where a given tree block is only referenced by one root, and use the full back references when multiple roots have a reference
* Update BUG_ON and WARN_ONShen Feng2009-01-07
| | | | | | | Define BUG_ON and WARN_ON as assert for easy debugging. Signed-off-by: Shen Feng <shen@cn.fujitsu.com>
* Add mirroring support across multiple drivesChris Mason2008-04-03
|
* Walk all block devices looking for btrfsChris Mason2008-03-24
|
* Update btrfs-progs to match kernel sourcesYan2008-01-04
|
* Create macros to generation set/get funcs for on disk structuresChris Mason2007-12-12
|
* Update btrfs-progs to better match the kernelYan2007-12-05
|
* i386 fixes from axboeChris Mason2007-06-12
|
* add GPLv2Chris Mason2007-06-12
|
* endian fixes, makefile fixesChris Mason2007-06-07
|
* add owner and type fields to the extents aand block headersChris Mason2007-04-20
|
* sync up with kernel sourcesChris Mason2007-04-02
|
* Use a chunk of the key flags to record the item type.Chris Mason2007-03-15
| | | | | | Add (untested and simple) directory item code Fix comp_keys to use the new key ordering Add btrfs_insert_empty_item
* struct key endian fixesChris Mason2007-03-12
|
* Add sparse endian annotations to struct headerChris Mason2007-03-12
| | | | rename struct header to btrfs_header
* u64 cleanupsChris Mason2007-02-26
|
* Add backing store, memory managementChris Mason2007-02-02
|
* Faster deletes, add Makefile and kerncompatChris Mason2007-01-26