Btrfs-progs: restore, for compressed extents don't read more bytes than needed
authorFilipe David Borba Manana <fdmanana@gmail.com>
Tue, 8 Apr 2014 16:37:22 +0000 (17:37 +0100)
committerDavid Sterba <dsterba@suse.cz>
Fri, 11 Apr 2014 17:40:35 +0000 (19:40 +0200)
commitd2334781fde887ed4e541c6794970ae942f81f23
treeeffc425dd503dfadee0e2457acfab21f5335d65f
parentb53b11a8b4fad541c6f95df836fde7cc14ce7a0f
Btrfs-progs: restore, for compressed extents don't read more bytes than needed

We need to read a number of bytes corresponding to the disk size of the file extent
item, and not to the number of bytes in the num_bytes field. Normally disk_size is
smaller than num_bytes (when using compression), except for files created with lzo
compression in a kernel older then the one which introduced the following change:

commit 59516f6017c589e7316418fda6128ba8f829a77f
Author: Stefan Agner <stefan@agner.ch>
Date:   Mon Jul 1 20:33:39 2013 +0200

    Btrfs: return -1 when lzo compression makes data bigger

    With this fix the lzo code behaves like the zlib code by returning an
    error
    code when compression does not help reduce the size of the file.
    This is currently not a bug since the compressed size is checked again
    in
    the calling method compress_file_range.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
cmds-restore.c