On 05/15/2018 03:51 PM, Misono Tomohiro wrote: > Incompat flag of lzo/zstd compression should be set at: > 1. mount time (-o compress/compress-force) > 2. when defrag is done > 3. when property is set > > Currently 3. is missing and this commit adds this. >
If I don't misunderstand, compression property of an inode is only apply for *the* inode, not the whole filesystem. So the original logical should be okay. Thanks, Su > Signed-off-by: Tomohiro Misono <misono.tomoh...@jp.fujitsu.com> > --- > fs/btrfs/props.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c > index 53a8c95828e3..dc6140013ae8 100644 > --- a/fs/btrfs/props.c > +++ b/fs/btrfs/props.c > @@ -380,6 +380,7 @@ static int prop_compression_apply(struct inode *inode, > const char *value, > size_t len) > { > + struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); > int type; > > if (len == 0) { > @@ -390,14 +391,17 @@ static int prop_compression_apply(struct inode *inode, > return 0; > } > > - if (!strncmp("lzo", value, 3)) > + if (!strncmp("lzo", value, 3)) { > type = BTRFS_COMPRESS_LZO; > - else if (!strncmp("zlib", value, 4)) > + btrfs_set_fs_incompat(fs_info, COMPRESS_LZO); > + } else if (!strncmp("zlib", value, 4)) { > type = BTRFS_COMPRESS_ZLIB; > - else if (!strncmp("zstd", value, len)) > + } else if (!strncmp("zstd", value, len)) { > type = BTRFS_COMPRESS_ZSTD; > - else > + btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD); > + } else { > return -EINVAL; > + } > > BTRFS_I(inode)->flags &= ~BTRFS_INODE_NOCOMPRESS; > BTRFS_I(inode)->flags |= BTRFS_INODE_COMPRESS; >
pEpkey.asc
Description: application/pgp-keys