diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2010-11-19 02:36:34 +0100 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2010-11-22 04:26:06 +0100 |
commit | 5f3888ff6f0b9dce60705765752b788a92557644 (patch) | |
tree | c7745507d85f68b188f0c9b11cc6f783f0d0cb86 | |
parent | btrfs: Check if dest_offset is block-size aligned before cloning file (diff) | |
download | linux-5f3888ff6f0b9dce60705765752b788a92557644.tar.xz linux-5f3888ff6f0b9dce60705765752b788a92557644.zip |
btrfs: Set file size correctly in file clone
Set src_offset = 0, src_length = 20K, dest_offset = 20K. And the
original filesize of the dest file 'file2' is 30K:
# ls -l /mnt/file2
-rw-r--r-- 1 root root 30720 Nov 18 16:42 /mnt/file2
Now clone file1 to file2, the dest file should be 40K, but it
still shows 30K:
# ls -l /mnt/file2
-rw-r--r-- 1 root root 30720 Nov 18 16:42 /mnt/file2
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to '')
-rw-r--r-- | fs/btrfs/ioctl.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 81b47bd8a55a..6b4bfa72bf8d 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -1873,8 +1873,8 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, * but shouldn't round up the file size */ endoff = new_key.offset + datal; - if (endoff > off+olen) - endoff = off+olen; + if (endoff > destoff+olen) + endoff = destoff+olen; if (endoff > inode->i_size) btrfs_i_size_write(inode, endoff); |