Loading fs/btrfs/ioctl.c +10 −3 Original line number Diff line number Diff line Loading @@ -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, Loading Loading
fs/btrfs/ioctl.c +10 −3 Original line number Diff line number Diff line Loading @@ -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, Loading