|
@@ -402,6 +402,9 @@ static inline int inode_need_compress(struct inode *inode, u64 start, u64 end)
|
|
|
/* bad compression ratios */
|
|
|
if (BTRFS_I(inode)->flags & BTRFS_INODE_NOCOMPRESS)
|
|
|
return 0;
|
|
|
+ /* defrag ioctl */
|
|
|
+ if (BTRFS_I(inode)->defrag_compress)
|
|
|
+ return 1;
|
|
|
if (btrfs_test_opt(fs_info, COMPRESS) ||
|
|
|
BTRFS_I(inode)->flags & BTRFS_INODE_COMPRESS ||
|
|
|
BTRFS_I(inode)->prop_compress)
|
|
@@ -511,7 +514,9 @@ again:
|
|
|
goto cont;
|
|
|
}
|
|
|
|
|
|
- if (BTRFS_I(inode)->prop_compress)
|
|
|
+ if (BTRFS_I(inode)->defrag_compress)
|
|
|
+ compress_type = BTRFS_I(inode)->defrag_compress;
|
|
|
+ else if (BTRFS_I(inode)->prop_compress)
|
|
|
compress_type = BTRFS_I(inode)->prop_compress;
|
|
|
|
|
|
/*
|
|
@@ -9434,6 +9439,7 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
|
|
|
|
|
|
ei->runtime_flags = 0;
|
|
|
ei->prop_compress = BTRFS_COMPRESS_NONE;
|
|
|
+ ei->defrag_compress = BTRFS_COMPRESS_NONE;
|
|
|
|
|
|
ei->delayed_node = NULL;
|
|
|
|