Go to file
Filipe David Borba Manana 4314116bae Btrfs-progs: fix restore of files with compressed extents
The code was incorrectly adding the file extent items' data offset to the logical
disk address of the extent (bytenr) when the extent is compressed. The offset is
relative to the uncompressed data and not to what we store on disk (compressed).
Also it attempted to copy ram_bytes to destination, which is incorrect when the
data offset field is non-zero, it must use num_bytes instead.

A test case for xfstests follows.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <clm@fb.com>
2014-03-21 06:23:28 -07:00
man btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
tests Btrfs-progs: add a test image for the transid fixer in btrfsck 2013-10-16 08:23:12 -04:00
.gitignore btrfs-progs: get C=1 sparse checking working again 2013-09-03 19:41:12 +02:00
COPYING fix COPYING 2007-06-12 15:41:08 -04:00
INSTALL Removing btrfsctl, btrfs-vol, btrfs-show 2013-03-19 18:21:41 +01:00
Makefile Btrfs-progs: introduce btrfs property subgroup 2014-01-31 08:22:31 -08:00
bcp Btrfs-progs: Correct path munging in bcp 2011-10-25 09:18:58 -04:00
bitops.h Btrfs-progs: add a free space cache checker to fsck V2 2013-04-23 18:56:21 +02:00
btrfs-calc-size.c btrfs-progs: free leaked roots in calc-size 2013-10-16 08:23:13 -04:00
btrfs-convert.c btrfs-progs: judge the return value of check_mounted more accurately 2014-03-21 06:23:21 -07:00
btrfs-corrupt-block.c Btrfs-progs: switch to arg_strtou64() part2 2014-03-21 06:23:19 -07:00
btrfs-crc.c btrfs-progs: Fix getopt on arm/ppc platforms 2013-08-09 14:32:34 +02:00
btrfs-debug-tree.c Btrfs-progs: switch to arg_strtou64() part2 2014-03-21 06:23:19 -07:00
btrfs-find-root.c Btrfs-progs: switch to arg_strtou64() part1 2014-03-21 06:23:19 -07:00
btrfs-fragments.c btrfs-progs: remove unused variables 2013-10-16 08:23:13 -04:00
btrfs-image.c btrfs-progs: don't remove BTRFS_BLOCK_GROUP_DUP in chunk type 2014-03-21 06:23:23 -07:00
btrfs-list.c Btrfs-progs: switch to arg_strtou64() part1 2014-03-21 06:23:19 -07:00
btrfs-list.h btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
btrfs-map-logical.c Btrfs-progs: switch to arg_strtou64() part2 2014-03-21 06:23:19 -07:00
btrfs-select-super.c Btrfs-progs: switch to arg_strtou64() part3 2014-03-21 06:23:20 -07:00
btrfs-show-super.c Btrfs-progs: switch to arg_strtou64() part3 2014-03-21 06:23:20 -07:00
btrfs-zero-log.c Btrfs-progs: rework open_ctree to take flags, add a new one V2 2013-11-07 16:10:40 -05:00
btrfs.c Btrfs-progs: introduce btrfs property subgroup 2014-01-31 08:22:31 -08:00
btrfsck.h btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
btrfstune.c btrfs-progs: judge the return value of check_mounted more accurately 2014-03-21 06:23:21 -07:00
chunk-recover.c btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
cmds-balance.c btrfs-progs: fix minor grammar issues 2014-01-31 08:22:28 -08:00
cmds-check.c Btrfs-progs: fsck: fix wrong return value in check_block() 2014-03-21 06:23:25 -07:00
cmds-device.c btrfs-progs: fix minor grammar issues 2014-01-31 08:22:28 -08:00
cmds-filesystem.c btrfs-progs: Fix check_arg_type() which doesn't use realpath() result. 2014-03-21 06:23:14 -07:00
cmds-inspect.c Btrfs-progs: switch to arg_strtou64() part2 2014-03-21 06:23:19 -07:00
cmds-property.c btrfs-progs: remove a dead break before usage() 2014-03-21 06:23:16 -07:00
cmds-qgroup.c btrfs-progs: qgroup destroy says create failed 2014-01-31 08:22:12 -08:00
cmds-quota.c Btrfs-progs: fix magic return value in cmds-quota.c 2013-10-16 08:20:41 -04:00
cmds-receive.c btrfs-progs: use usage() to replace the warning msg on no-arg usage 2014-03-21 06:23:15 -07:00
cmds-replace.c Btrfs-progs: switch to arg_strtou64() part3 2014-03-21 06:23:20 -07:00
cmds-rescue.c btrfs-progs: judge the return value of check_mounted more accurately 2014-03-21 06:23:21 -07:00
cmds-restore.c Btrfs-progs: fix restore of files with compressed extents 2014-03-21 06:23:28 -07:00
cmds-scrub.c btrfs-progs: fix minor grammar issues 2014-01-31 08:22:28 -08:00
cmds-send.c btrfs-progs: use usage() to replace the warning msg on no-arg usage 2014-03-21 06:23:15 -07:00
cmds-subvolume.c Btrfs-progs: switch to arg_strtou64() part3 2014-03-21 06:23:20 -07:00
commands.h btrfs-progs: move find_mount_root to utils.[ch] 2014-03-21 06:23:12 -07:00
crc32c.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
crc32c.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
ctree.c Btrfs-progs: deal with invalid key orderings and bad orphan items V2 2014-01-31 08:22:15 -08:00
ctree.h Btrfs-progs: add support for the no holes incompat flag 2014-01-31 08:22:23 -08:00
dir-item.c btrfs-progs: drop unused parameter from btrfs_item_nr 2013-10-16 08:23:10 -04:00
dir-test.c Btrfs-progs: fix magic return value in dir-test.c 2013-10-16 08:20:42 -04:00
disk-io.c btrfs-progs: Fix bus error on sparc 2014-01-31 08:22:29 -08:00
disk-io.h btrfs-progs: btrfsck operations should be exclusive 2014-01-31 08:22:26 -08:00
extent-cache.c Btrfs-progs: extend the extent cache for the device extent 2013-07-03 14:06:54 -04:00
extent-cache.h Btrfs-progs: extend the extent cache for the device extent 2013-07-03 14:06:54 -04:00
extent-tree.c mkfs: fix mkfs -r to properly allocate space 2013-10-16 10:42:53 -04:00
extent_io.c Btrfs-progs: fix the mismatch of extent buffer's space 2014-01-31 08:22:06 -08:00
extent_io.h Btrfs-progs: keep track of transid failures and fix them if possible 2013-10-16 08:23:12 -04:00
file-item.c Btrfs-progs: deal with invalid key orderings and bad orphan items V2 2014-01-31 08:22:15 -08:00
free-space-cache.c btrfs-progs: cleanup nonsense ret value assignment 2014-03-21 06:23:16 -07:00
free-space-cache.h Btrfs-progs: add a free space cache checker to fsck V2 2013-04-23 18:56:21 +02:00
fsck.btrfs btrfs-progs: add fsck.btrfs stub and manpage 2014-01-31 08:22:13 -08:00
hash.h Switch btrfs_name_hash() to crc32c 2008-08-20 20:11:23 -04:00
hasher.c Unaligned access fixes 2008-02-15 11:19:58 -05:00
help.c Btrfs-progs: return 1 rather than 129 in usage() 2013-10-16 08:20:03 -04:00
inode-item.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
inode-map.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
ioctl-test.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
ioctl.h ioctl: add note regarding CLONE_RANGE(len=0) behaviour 2014-03-21 06:23:10 -07:00
kerncompat.h btrfs-progs: Change BUG() to use assert. 2014-03-21 06:23:11 -07:00
list.h Btrfs-progs: introduce list_{first, next}_entry/list_splice_tail{_init} 2013-07-03 14:06:55 -04:00
list_sort.c btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
list_sort.h btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
math.h btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
mkfs.c Btrfs-progs: add support for the no holes incompat flag 2014-01-31 08:22:23 -08:00
print-tree.c btrfs-progs: convert remaining uuid buffer declarations to BTRFS_UUID_UNPARSED_SIZE 2014-01-31 08:22:13 -08:00
print-tree.h Btrfs: add btrfs-debug-tree -b <block number> to print a single block 2010-04-06 09:30:17 -04:00
props.c Btrfs-progs: add support for the compression property 2014-01-31 08:22:33 -08:00
props.h Btrfs-progs: introduce btrfs property subgroup 2014-01-31 08:22:31 -08:00
qgroup.c btrfs-progs: make it static if function isn't called outside 2014-01-31 08:22:01 -08:00
qgroup.h Btrfs-progs: enhance btrfs qgroup show to sort qgroups 2013-10-16 08:23:12 -04:00
quick-test.c Btrfs-progs: rework open_ctree to take flags, add a new one V2 2013-11-07 16:10:40 -05:00
radix-tree.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
radix-tree.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
raid6.c btrfs-progs: give raid6.c its exported prototypes 2013-09-03 19:41:11 +02:00
random-test.c Btrfs-progs: fix magic return value in random-test.c 2013-10-16 08:20:42 -04:00
rbtree.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
rbtree.h Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
repair.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
repair.h Btrfsck: add the ability to prune corrupt extent allocation tree blocks 2012-02-21 14:37:21 -05:00
root-tree.c Btrfs-progs: just return -ENOENT if we don't find the root item 2013-10-24 05:57:44 -04:00
send-stream.c Btrfs-progs: remove some unused code 2013-04-23 18:56:25 +02:00
send-stream.h Btrfs-progs: btrfs-receive optionally honors the end-cmd 2013-04-23 18:56:24 +02:00
send-test.c btrfs-progs: convert remaining uuid buffer declarations to BTRFS_UUID_UNPARSED_SIZE 2014-01-31 08:22:13 -08:00
send-utils.c btrfs-progs: enclose uuid tree compat code with ifdefs 2014-03-21 06:23:07 -07:00
send-utils.h btrfs-progs: enclose uuid tree compat code with ifdefs 2014-03-21 06:23:07 -07:00
send.h btrfs-progs: make libbtrfs usable from C++ 2013-02-19 11:15:30 +01:00
show-blocks Fix showblocks to display different colors for different metadata roots 2009-03-09 13:00:44 -04:00
super-recover.c btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
transaction.h btrfs-progs: add malloc check in transaction.h/btrfs_start_transaction 2013-01-18 18:27:21 +01:00
utils.c btrfs-progs: Fix bug when scanned for devid which was missing and deleted 2014-03-21 06:23:28 -07:00
utils.h btrfs-progs: Allow use of get_device_info() 2014-03-21 06:23:22 -07:00
uuid-tree.c btrfs-progs: fix in-place byte swapping 2013-09-03 19:41:06 +02:00
version.sh Update the version 2013-11-25 15:48:57 -05:00
volumes.c btrfs-progs: btrfsck operations should be exclusive 2014-01-31 08:22:26 -08:00
volumes.h btrfs-progs: don't replicate the stripe_len defines 2014-01-31 08:22:18 -08:00