From cad5c0aacb8967e1cecfe74bb4395112191635a9 Mon Sep 17 00:00:00 2001 From: Li Zefan Date: Sun, 18 Sep 2011 10:20:46 -0400 Subject: [PATCH] --- yaml --- r: 263979 b: refs/heads/master c: 0e7b824c4ef9f5bcf5e48cdce164a7b349dde969 h: refs/heads/master i: 263977: 437d1dcce1fd03158a4015e98f658ff8b885ab65 263975: 801de5a9790b5365290d54e7d536a46f7f6fc0f2 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/ioctl.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f81b330cb881..927e33459d5b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 71ef07861080418d125dcf454af41baafa409a2c +refs/heads/master: 0e7b824c4ef9f5bcf5e48cdce164a7b349dde969 diff --git a/trunk/fs/btrfs/ioctl.c b/trunk/fs/btrfs/ioctl.c index 8bfb514b26c9..1e766e86f334 100644 --- a/trunk/fs/btrfs/ioctl.c +++ b/trunk/fs/btrfs/ioctl.c @@ -2185,6 +2185,11 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, if (!(src_file->f_mode & FMODE_READ)) goto out_fput; + /* don't make the dst file partly checksummed */ + if ((BTRFS_I(src)->flags & BTRFS_INODE_NODATASUM) != + (BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM)) + goto out_fput; + ret = -EISDIR; if (S_ISDIR(src->i_mode) || S_ISDIR(inode->i_mode)) goto out_fput;