Skip to content

Commit

Permalink
Btrfs: calc file extent num_bytes correctly in file clone
Browse files Browse the repository at this point in the history
num_bytes should be 4096 not 12288.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Li Zefan authored and Chris Mason committed Sep 11, 2011
1 parent 4815053 commit d72c084
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions fs/btrfs/ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -2333,14 +2333,21 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,

if (type == BTRFS_FILE_EXTENT_REG ||
type == BTRFS_FILE_EXTENT_PREALLOC) {
/*
* a | --- range to clone ---| b
* | ------------- extent ------------- |
*/

/* substract range b */
if (key.offset + datal > off + len)
datal = off + len - key.offset;

/* substract range a */
if (off > key.offset) {
datao += off - key.offset;
datal -= off - key.offset;
}

if (key.offset + datal > off + len)
datal = off + len - key.offset;

ret = btrfs_drop_extents(trans, inode,
new_key.offset,
new_key.offset + datal,
Expand Down

0 comments on commit d72c084

Please sign in to comment.