diff options
| author | 2012-06-14 02:23:18 -0600 | |
|---|---|---|
| committer | 2012-06-15 11:33:30 -0400 | |
| commit | bc1782374b128103ae9689e0753e0610f35b6bfd (patch) | |
| tree | 876bb3e67c5163b238418493e44e1e865c8c85be | |
| parent | Merge branch 'for-chris' of git://git.jan-o-sch.net/btrfs-unstable into for-linus (diff) | |
| download | wireguard-linux-bc1782374b128103ae9689e0753e0610f35b6bfd.tar.xz wireguard-linux-bc1782374b128103ae9689e0753e0610f35b6bfd.zip | |
Btrfs: fix missing inherited flag in rename
When we move a file into a directory with compression flag, we need to
inherite BTRFS_INODE_COMPRESS and clear BTRFS_INODE_NOCOMPRESS as well.
But if we move a file into a directory without compression flag, we need
to clear both of them.
It is the way how our setflags deals with compression flag, so keep
the same behaviour here.
Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to '')
| -rw-r--r-- | fs/btrfs/inode.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 7a090fb4eb98..3f2c8cbe5ba6 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -7122,10 +7122,13 @@ static void fixup_inode_flags(struct inode *dir, struct inode *inode) else b_inode->flags &= ~BTRFS_INODE_NODATACOW; - if (b_dir->flags & BTRFS_INODE_COMPRESS) + if (b_dir->flags & BTRFS_INODE_COMPRESS) { b_inode->flags |= BTRFS_INODE_COMPRESS; - else - b_inode->flags &= ~BTRFS_INODE_COMPRESS; + b_inode->flags &= ~BTRFS_INODE_NOCOMPRESS; + } else { + b_inode->flags &= ~(BTRFS_INODE_COMPRESS | + BTRFS_INODE_NOCOMPRESS); + } } static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, |
