* [RFC PATCH 0/2] f2fs: introduce lost+found feature @ 2018-02-06 4:31 Sheng Yong 2018-02-06 4:31 ` [RFC PATCH 1/2] f2fs: clean up f2fs_sb_has_xxx functions Sheng Yong ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Sheng Yong @ 2018-02-06 4:31 UTC (permalink / raw) To: jaegeuk, yuchao0; +Cc: heyunlei, miaoxie, shengyong1, linux-f2fs-devel This patchset introduces lost+found feature in f2fs. If the feature is enabled, f2fs should avoid to encrypting root directory. For more information, please check the mail "f2fs-tools: introduce lost+ found feature". Thanks, Sheng Sheng Yong (2): f2fs: clean up f2fs_sb_has_xxx functions f2fs: introduce lost+found feature fs/f2fs/data.c | 2 +- fs/f2fs/f2fs.h | 53 +++++++++++++++-------------------------------------- fs/f2fs/file.c | 6 +++--- fs/f2fs/segment.c | 4 ++-- fs/f2fs/super.c | 26 +++++++++++++++++++------- fs/f2fs/sysfs.c | 4 ++-- 6 files changed, 42 insertions(+), 53 deletions(-) -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 9+ messages in thread
* [RFC PATCH 1/2] f2fs: clean up f2fs_sb_has_xxx functions 2018-02-06 4:31 [RFC PATCH 0/2] f2fs: introduce lost+found feature Sheng Yong @ 2018-02-06 4:31 ` Sheng Yong 2018-02-08 13:21 ` Chao Yu 2018-02-06 4:31 ` [RFC PATCH 2/2] f2fs: introduce lost+found feature Sheng Yong 2018-02-10 2:50 ` [RFC PATCH 0/2] " Jaegeuk Kim 2 siblings, 1 reply; 9+ messages in thread From: Sheng Yong @ 2018-02-06 4:31 UTC (permalink / raw) To: jaegeuk, yuchao0; +Cc: heyunlei, miaoxie, shengyong1, linux-f2fs-devel This patch introduces F2FS_FEATURE_FUNCS to clean up the definitions of different f2fs_sb_has_xxx functions. Signed-off-by: Sheng Yong <shengyong1@huawei.com> --- fs/f2fs/data.c | 2 +- fs/f2fs/f2fs.h | 51 +++++++++++++-------------------------------------- fs/f2fs/file.c | 6 +++--- fs/f2fs/segment.c | 4 ++-- fs/f2fs/super.c | 14 +++++++------- fs/f2fs/sysfs.c | 4 ++-- 6 files changed, 28 insertions(+), 53 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 6cba74eb09a7..4eec9ad9493d 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -196,7 +196,7 @@ static inline void __submit_bio(struct f2fs_sb_info *sbi, if (!is_read_io(bio_op(bio))) { unsigned int start; - if (f2fs_sb_mounted_blkzoned(sbi->sb) && + if (f2fs_sb_has_blkzoned(sbi->sb) && current->plug && (type == DATA || type == NODE)) blk_finish_plug(current->plug); diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 6300ac5bcbe4..a60d56a96f9b 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -3172,45 +3172,20 @@ static inline bool f2fs_bio_encrypted(struct bio *bio) return bio->bi_private != NULL; } -static inline int f2fs_sb_has_crypto(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_ENCRYPT); -} - -static inline int f2fs_sb_mounted_blkzoned(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_BLKZONED); +#define F2FS_FEATURE_FUNCS(name, flagname) \ +static inline int f2fs_sb_has_##name(struct super_block *sb) \ +{ \ + return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_##flagname); \ } -static inline int f2fs_sb_has_extra_attr(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_EXTRA_ATTR); -} - -static inline int f2fs_sb_has_project_quota(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_PRJQUOTA); -} - -static inline int f2fs_sb_has_inode_chksum(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_INODE_CHKSUM); -} - -static inline int f2fs_sb_has_flexible_inline_xattr(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_FLEXIBLE_INLINE_XATTR); -} - -static inline int f2fs_sb_has_quota_ino(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_QUOTA_INO); -} - -static inline int f2fs_sb_has_inode_crtime(struct super_block *sb) -{ - return F2FS_HAS_FEATURE(sb, F2FS_FEATURE_INODE_CRTIME); -} +F2FS_FEATURE_FUNCS(encrypt, ENCRYPT); +F2FS_FEATURE_FUNCS(blkzoned, BLKZONED); +F2FS_FEATURE_FUNCS(extra_attr, EXTRA_ATTR); +F2FS_FEATURE_FUNCS(project_quota, PRJQUOTA); +F2FS_FEATURE_FUNCS(inode_chksum, INODE_CHKSUM); +F2FS_FEATURE_FUNCS(flexible_inline_xattr, FLEXIBLE_INLINE_XATTR); +F2FS_FEATURE_FUNCS(quota_ino, QUOTA_INO); +F2FS_FEATURE_FUNCS(inode_crtime, INODE_CRTIME); #ifdef CONFIG_BLK_DEV_ZONED static inline int get_blkz_type(struct f2fs_sb_info *sbi, @@ -3230,7 +3205,7 @@ static inline bool f2fs_discard_en(struct f2fs_sb_info *sbi) { struct request_queue *q = bdev_get_queue(sbi->sb->s_bdev); - return blk_queue_discard(q) || f2fs_sb_mounted_blkzoned(sbi->sb); + return blk_queue_discard(q) || f2fs_sb_has_blkzoned(sbi->sb); } static inline void set_opt_mode(struct f2fs_sb_info *sbi, unsigned int mt) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 672a542e5464..29956e16c58c 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -1938,7 +1938,7 @@ static int f2fs_ioc_set_encryption_policy(struct file *filp, unsigned long arg) { struct inode *inode = file_inode(filp); - if (!f2fs_sb_has_crypto(inode->i_sb)) + if (!f2fs_sb_has_encrypt(inode->i_sb)) return -EOPNOTSUPP; f2fs_update_time(F2FS_I_SB(inode), REQ_TIME); @@ -1948,7 +1948,7 @@ static int f2fs_ioc_set_encryption_policy(struct file *filp, unsigned long arg) static int f2fs_ioc_get_encryption_policy(struct file *filp, unsigned long arg) { - if (!f2fs_sb_has_crypto(file_inode(filp)->i_sb)) + if (!f2fs_sb_has_encrypt(file_inode(filp)->i_sb)) return -EOPNOTSUPP; return fscrypt_ioctl_get_policy(filp, (void __user *)arg); } @@ -1959,7 +1959,7 @@ static int f2fs_ioc_get_encryption_pwsalt(struct file *filp, unsigned long arg) struct f2fs_sb_info *sbi = F2FS_I_SB(inode); int err; - if (!f2fs_sb_has_crypto(inode->i_sb)) + if (!f2fs_sb_has_encrypt(inode->i_sb)) return -EOPNOTSUPP; if (uuid_is_nonzero(sbi->raw_super->encrypt_pw_salt)) diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index b16a8e6625aa..860d0cfd624a 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -1485,7 +1485,7 @@ static int __issue_discard_async(struct f2fs_sb_info *sbi, struct block_device *bdev, block_t blkstart, block_t blklen) { #ifdef CONFIG_BLK_DEV_ZONED - if (f2fs_sb_mounted_blkzoned(sbi->sb) && + if (f2fs_sb_has_blkzoned(sbi->sb) && bdev_zoned_model(bdev) != BLK_ZONED_NONE) return __f2fs_issue_discard_zone(sbi, bdev, blkstart, blklen); #endif @@ -1683,7 +1683,7 @@ void clear_prefree_segments(struct f2fs_sb_info *sbi, struct cp_control *cpc) sbi->blocks_per_seg, cur_pos); len = next_pos - cur_pos; - if (f2fs_sb_mounted_blkzoned(sbi->sb) || + if (f2fs_sb_has_blkzoned(sbi->sb) || (force && len < cpc->trim_minlen)) goto skip; diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 8173ae688814..b39ab55ab1b5 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -403,14 +403,14 @@ static int parse_options(struct super_block *sb, char *options) q = bdev_get_queue(sb->s_bdev); if (blk_queue_discard(q)) { set_opt(sbi, DISCARD); - } else if (!f2fs_sb_mounted_blkzoned(sb)) { + } else if (!f2fs_sb_has_blkzoned(sb)) { f2fs_msg(sb, KERN_WARNING, "mounting with \"discard\" option, but " "the device does not support discard"); } break; case Opt_nodiscard: - if (f2fs_sb_mounted_blkzoned(sb)) { + if (f2fs_sb_has_blkzoned(sb)) { f2fs_msg(sb, KERN_WARNING, "discard is required for zoned block devices"); return -EINVAL; @@ -559,7 +559,7 @@ static int parse_options(struct super_block *sb, char *options) return -ENOMEM; if (strlen(name) == 8 && !strncmp(name, "adaptive", 8)) { - if (f2fs_sb_mounted_blkzoned(sb)) { + if (f2fs_sb_has_blkzoned(sb)) { f2fs_msg(sb, KERN_WARNING, "adaptive mode is not allowed with " "zoned block device feature"); @@ -1243,7 +1243,7 @@ static void default_options(struct f2fs_sb_info *sbi) set_opt(sbi, NOHEAP); sbi->sb->s_flags |= SB_LAZYTIME; set_opt(sbi, FLUSH_MERGE); - if (f2fs_sb_mounted_blkzoned(sbi->sb)) { + if (f2fs_sb_has_blkzoned(sbi->sb)) { set_opt_mode(sbi, F2FS_MOUNT_LFS); set_opt(sbi, DISCARD); } else { @@ -2206,7 +2206,7 @@ static int init_blkz_info(struct f2fs_sb_info *sbi, int devi) unsigned int n = 0; int err = -EIO; - if (!f2fs_sb_mounted_blkzoned(sbi->sb)) + if (!f2fs_sb_has_blkzoned(sbi->sb)) return 0; if (sbi->blocks_per_blkz && sbi->blocks_per_blkz != @@ -2413,7 +2413,7 @@ static int f2fs_scan_devices(struct f2fs_sb_info *sbi) #ifdef CONFIG_BLK_DEV_ZONED if (bdev_zoned_model(FDEV(i).bdev) == BLK_ZONED_HM && - !f2fs_sb_mounted_blkzoned(sbi->sb)) { + !f2fs_sb_has_blkzoned(sbi->sb)) { f2fs_msg(sbi->sb, KERN_ERR, "Zoned block device feature not enabled\n"); return -EINVAL; @@ -2508,7 +2508,7 @@ static int f2fs_fill_super(struct super_block *sb, void *data, int silent) * devices, but mandatory for host-managed zoned block devices. */ #ifndef CONFIG_BLK_DEV_ZONED - if (f2fs_sb_mounted_blkzoned(sb)) { + if (f2fs_sb_has_blkzoned(sb)) { f2fs_msg(sb, KERN_ERR, "Zoned block device support is not enabled\n"); err = -EOPNOTSUPP; diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index d978c7b6ea04..374ee5c82f94 100644 --- a/fs/f2fs/sysfs.c +++ b/fs/f2fs/sysfs.c @@ -92,10 +92,10 @@ static ssize_t features_show(struct f2fs_attr *a, if (!sb->s_bdev->bd_part) return snprintf(buf, PAGE_SIZE, "0\n"); - if (f2fs_sb_has_crypto(sb)) + if (f2fs_sb_has_encrypt(sb)) len += snprintf(buf, PAGE_SIZE - len, "%s", "encryption"); - if (f2fs_sb_mounted_blkzoned(sb)) + if (f2fs_sb_has_blkzoned(sb)) len += snprintf(buf + len, PAGE_SIZE - len, "%s%s", len ? ", " : "", "blkzoned"); if (f2fs_sb_has_extra_attr(sb)) -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [RFC PATCH 1/2] f2fs: clean up f2fs_sb_has_xxx functions 2018-02-06 4:31 ` [RFC PATCH 1/2] f2fs: clean up f2fs_sb_has_xxx functions Sheng Yong @ 2018-02-08 13:21 ` Chao Yu 0 siblings, 0 replies; 9+ messages in thread From: Chao Yu @ 2018-02-08 13:21 UTC (permalink / raw) To: Sheng Yong, jaegeuk, yuchao0; +Cc: miaoxie, heyunlei, linux-f2fs-devel On 2018/2/6 12:31, Sheng Yong wrote: > This patch introduces F2FS_FEATURE_FUNCS to clean up the definitions of > different f2fs_sb_has_xxx functions. > > Signed-off-by: Sheng Yong <shengyong1@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com> Thanks, ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 9+ messages in thread
* [RFC PATCH 2/2] f2fs: introduce lost+found feature 2018-02-06 4:31 [RFC PATCH 0/2] f2fs: introduce lost+found feature Sheng Yong 2018-02-06 4:31 ` [RFC PATCH 1/2] f2fs: clean up f2fs_sb_has_xxx functions Sheng Yong @ 2018-02-06 4:31 ` Sheng Yong 2018-02-08 13:29 ` Chao Yu 2018-02-10 2:50 ` [RFC PATCH 0/2] " Jaegeuk Kim 2 siblings, 1 reply; 9+ messages in thread From: Sheng Yong @ 2018-02-06 4:31 UTC (permalink / raw) To: jaegeuk, yuchao0; +Cc: heyunlei, miaoxie, shengyong1, linux-f2fs-devel Introduce lost+found feature. The lost+found is a directory which saves unreachable files. If f2fsck finds a file which has no parent, or the parent is removed by f2fsck, the file will be placed in lost+found directory. According fscrypt policy, lost+found could not be encrypted. As a result, the root directory cannot be encrypted. So if lost+found feature is enabled, let's avoid to encrypt root directory. Signed-off-by: Sheng Yong <shengyong1@huawei.com> --- fs/f2fs/f2fs.h | 2 ++ fs/f2fs/super.c | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index a60d56a96f9b..d9c9be6ea5d5 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -125,6 +125,7 @@ struct f2fs_mount_info { #define F2FS_FEATURE_FLEXIBLE_INLINE_XATTR 0x0040 #define F2FS_FEATURE_QUOTA_INO 0x0080 #define F2FS_FEATURE_INODE_CRTIME 0x0100 +#define F2FS_FEATURE_LOST_FOUND 0x0200 #define F2FS_HAS_FEATURE(sb, mask) \ ((F2FS_SB(sb)->raw_super->feature & cpu_to_le32(mask)) != 0) @@ -3186,6 +3187,7 @@ F2FS_FEATURE_FUNCS(inode_chksum, INODE_CHKSUM); F2FS_FEATURE_FUNCS(flexible_inline_xattr, FLEXIBLE_INLINE_XATTR); F2FS_FEATURE_FUNCS(quota_ino, QUOTA_INO); F2FS_FEATURE_FUNCS(inode_crtime, INODE_CRTIME); +F2FS_FEATURE_FUNCS(lost_found, LOST_FOUND); #ifdef CONFIG_BLK_DEV_ZONED static inline int get_blkz_type(struct f2fs_sb_info *sbi, diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index b39ab55ab1b5..5f536e878d21 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1797,6 +1797,18 @@ static int f2fs_get_context(struct inode *inode, void *ctx, size_t len) static int f2fs_set_context(struct inode *inode, const void *ctx, size_t len, void *fs_data) { + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); + + /* + * Encrypting the root directory is not allowed because f2fsck + * expects lost+found directory to exist and remain unencrypted + * if LOST_FOUND feature is enabled. + * + */ + if (f2fs_sb_has_lost_found(sbi->sb) && + inode->i_ino == F2FS_ROOT_INO(sbi)) + return -EPERM; + return f2fs_setxattr(inode, F2FS_XATTR_INDEX_ENCRYPTION, F2FS_XATTR_NAME_ENCRYPTION_CONTEXT, ctx, len, fs_data, XATTR_CREATE); -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [RFC PATCH 2/2] f2fs: introduce lost+found feature 2018-02-06 4:31 ` [RFC PATCH 2/2] f2fs: introduce lost+found feature Sheng Yong @ 2018-02-08 13:29 ` Chao Yu 2018-02-09 3:22 ` Sheng Yong 0 siblings, 1 reply; 9+ messages in thread From: Chao Yu @ 2018-02-08 13:29 UTC (permalink / raw) To: Sheng Yong, jaegeuk, yuchao0; +Cc: miaoxie, heyunlei, linux-f2fs-devel On 2018/2/6 12:31, Sheng Yong wrote: > Introduce lost+found feature. The lost+found is a directory which saves Nitpick, lost_found feature... Needs to add /sys/fs/f2fs/features/lost_found sysfs entry, and show 'lost_found' in /sys/fs/f2fs/<dev>/features. Thanks, > unreachable files. If f2fsck finds a file which has no parent, or the > parent is removed by f2fsck, the file will be placed in lost+found > directory. > > According fscrypt policy, lost+found could not be encrypted. As a > result, the root directory cannot be encrypted. So if lost+found > feature is enabled, let's avoid to encrypt root directory. > > Signed-off-by: Sheng Yong <shengyong1@huawei.com> > --- > fs/f2fs/f2fs.h | 2 ++ > fs/f2fs/super.c | 12 ++++++++++++ > 2 files changed, 14 insertions(+) > > diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h > index a60d56a96f9b..d9c9be6ea5d5 100644 > --- a/fs/f2fs/f2fs.h > +++ b/fs/f2fs/f2fs.h > @@ -125,6 +125,7 @@ struct f2fs_mount_info { > #define F2FS_FEATURE_FLEXIBLE_INLINE_XATTR 0x0040 > #define F2FS_FEATURE_QUOTA_INO 0x0080 > #define F2FS_FEATURE_INODE_CRTIME 0x0100 > +#define F2FS_FEATURE_LOST_FOUND 0x0200 > > #define F2FS_HAS_FEATURE(sb, mask) \ > ((F2FS_SB(sb)->raw_super->feature & cpu_to_le32(mask)) != 0) > @@ -3186,6 +3187,7 @@ F2FS_FEATURE_FUNCS(inode_chksum, INODE_CHKSUM); > F2FS_FEATURE_FUNCS(flexible_inline_xattr, FLEXIBLE_INLINE_XATTR); > F2FS_FEATURE_FUNCS(quota_ino, QUOTA_INO); > F2FS_FEATURE_FUNCS(inode_crtime, INODE_CRTIME); > +F2FS_FEATURE_FUNCS(lost_found, LOST_FOUND); > > #ifdef CONFIG_BLK_DEV_ZONED > static inline int get_blkz_type(struct f2fs_sb_info *sbi, > diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c > index b39ab55ab1b5..5f536e878d21 100644 > --- a/fs/f2fs/super.c > +++ b/fs/f2fs/super.c > @@ -1797,6 +1797,18 @@ static int f2fs_get_context(struct inode *inode, void *ctx, size_t len) > static int f2fs_set_context(struct inode *inode, const void *ctx, size_t len, > void *fs_data) > { > + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); > + > + /* > + * Encrypting the root directory is not allowed because f2fsck > + * expects lost+found directory to exist and remain unencrypted > + * if LOST_FOUND feature is enabled. > + * > + */ > + if (f2fs_sb_has_lost_found(sbi->sb) && > + inode->i_ino == F2FS_ROOT_INO(sbi)) > + return -EPERM; > + > return f2fs_setxattr(inode, F2FS_XATTR_INDEX_ENCRYPTION, > F2FS_XATTR_NAME_ENCRYPTION_CONTEXT, > ctx, len, fs_data, XATTR_CREATE); > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH 2/2] f2fs: introduce lost+found feature 2018-02-08 13:29 ` Chao Yu @ 2018-02-09 3:22 ` Sheng Yong 0 siblings, 0 replies; 9+ messages in thread From: Sheng Yong @ 2018-02-09 3:22 UTC (permalink / raw) To: Chao Yu, jaegeuk, yuchao0; +Cc: miaoxie, heyunlei, linux-f2fs-devel Hi, Chao On 2018/2/8 21:29, Chao Yu wrote: > On 2018/2/6 12:31, Sheng Yong wrote: >> Introduce lost+found feature. The lost+found is a directory which saves > > Nitpick, lost_found feature... > > Needs to add /sys/fs/f2fs/features/lost_found sysfs entry, and show > 'lost_found' in /sys/fs/f2fs/<dev>/features. I will add this sysfs entry in the next version :) Thanks, Sheng > > Thanks, > >> unreachable files. If f2fsck finds a file which has no parent, or the >> parent is removed by f2fsck, the file will be placed in lost+found >> directory. >> >> According fscrypt policy, lost+found could not be encrypted. As a >> result, the root directory cannot be encrypted. So if lost+found >> feature is enabled, let's avoid to encrypt root directory. >> >> Signed-off-by: Sheng Yong <shengyong1@huawei.com> >> --- >> fs/f2fs/f2fs.h | 2 ++ >> fs/f2fs/super.c | 12 ++++++++++++ >> 2 files changed, 14 insertions(+) >> >> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h >> index a60d56a96f9b..d9c9be6ea5d5 100644 >> --- a/fs/f2fs/f2fs.h >> +++ b/fs/f2fs/f2fs.h >> @@ -125,6 +125,7 @@ struct f2fs_mount_info { >> #define F2FS_FEATURE_FLEXIBLE_INLINE_XATTR 0x0040 >> #define F2FS_FEATURE_QUOTA_INO 0x0080 >> #define F2FS_FEATURE_INODE_CRTIME 0x0100 >> +#define F2FS_FEATURE_LOST_FOUND 0x0200 >> >> #define F2FS_HAS_FEATURE(sb, mask) \ >> ((F2FS_SB(sb)->raw_super->feature & cpu_to_le32(mask)) != 0) >> @@ -3186,6 +3187,7 @@ F2FS_FEATURE_FUNCS(inode_chksum, INODE_CHKSUM); >> F2FS_FEATURE_FUNCS(flexible_inline_xattr, FLEXIBLE_INLINE_XATTR); >> F2FS_FEATURE_FUNCS(quota_ino, QUOTA_INO); >> F2FS_FEATURE_FUNCS(inode_crtime, INODE_CRTIME); >> +F2FS_FEATURE_FUNCS(lost_found, LOST_FOUND); >> >> #ifdef CONFIG_BLK_DEV_ZONED >> static inline int get_blkz_type(struct f2fs_sb_info *sbi, >> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c >> index b39ab55ab1b5..5f536e878d21 100644 >> --- a/fs/f2fs/super.c >> +++ b/fs/f2fs/super.c >> @@ -1797,6 +1797,18 @@ static int f2fs_get_context(struct inode *inode, void *ctx, size_t len) >> static int f2fs_set_context(struct inode *inode, const void *ctx, size_t len, >> void *fs_data) >> { >> + struct f2fs_sb_info *sbi = F2FS_I_SB(inode); >> + >> + /* >> + * Encrypting the root directory is not allowed because f2fsck >> + * expects lost+found directory to exist and remain unencrypted >> + * if LOST_FOUND feature is enabled. >> + * >> + */ >> + if (f2fs_sb_has_lost_found(sbi->sb) && >> + inode->i_ino == F2FS_ROOT_INO(sbi)) >> + return -EPERM; >> + >> return f2fs_setxattr(inode, F2FS_XATTR_INDEX_ENCRYPTION, >> F2FS_XATTR_NAME_ENCRYPTION_CONTEXT, >> ctx, len, fs_data, XATTR_CREATE); >> > > . > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH 0/2] f2fs: introduce lost+found feature 2018-02-06 4:31 [RFC PATCH 0/2] f2fs: introduce lost+found feature Sheng Yong 2018-02-06 4:31 ` [RFC PATCH 1/2] f2fs: clean up f2fs_sb_has_xxx functions Sheng Yong 2018-02-06 4:31 ` [RFC PATCH 2/2] f2fs: introduce lost+found feature Sheng Yong @ 2018-02-10 2:50 ` Jaegeuk Kim 2018-02-11 1:53 ` Sheng Yong 2 siblings, 1 reply; 9+ messages in thread From: Jaegeuk Kim @ 2018-02-10 2:50 UTC (permalink / raw) To: Sheng Yong; +Cc: heyunlei, miaoxie, linux-f2fs-devel On 02/06, Sheng Yong wrote: > This patchset introduces lost+found feature in f2fs. If the feature is > enabled, f2fs should avoid to encrypting root directory. In that case, we need to add test_dummy_encryption likewise ext4. > > For more information, please check the mail "f2fs-tools: introduce lost+ > found feature". > > Thanks, > Sheng > > Sheng Yong (2): > f2fs: clean up f2fs_sb_has_xxx functions > f2fs: introduce lost+found feature > > fs/f2fs/data.c | 2 +- > fs/f2fs/f2fs.h | 53 +++++++++++++++-------------------------------------- > fs/f2fs/file.c | 6 +++--- > fs/f2fs/segment.c | 4 ++-- > fs/f2fs/super.c | 26 +++++++++++++++++++------- > fs/f2fs/sysfs.c | 4 ++-- > 6 files changed, 42 insertions(+), 53 deletions(-) > > -- > 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH 0/2] f2fs: introduce lost+found feature 2018-02-10 2:50 ` [RFC PATCH 0/2] " Jaegeuk Kim @ 2018-02-11 1:53 ` Sheng Yong 2018-02-12 0:10 ` Jaegeuk Kim 0 siblings, 1 reply; 9+ messages in thread From: Sheng Yong @ 2018-02-11 1:53 UTC (permalink / raw) To: Jaegeuk Kim; +Cc: heyunlei, miaoxie, linux-f2fs-devel Hi, Jaegeuk On 2018/2/10 10:50, Jaegeuk Kim wrote: > On 02/06, Sheng Yong wrote: >> This patchset introduces lost+found feature in f2fs. If the feature is >> enabled, f2fs should avoid to encrypting root directory. > > In that case, we need to add test_dummy_encryption likewise ext4. > If the test_dummy_encryption is only used for some a testcase, I think it's ok not to add it. The lost_found feature is not enabled by default, so if we don't specify "-O lost_found" for mkfs, root directory is allowed to be encrypted. If I miss something, please let me know :) thanks, Sheng >> >> For more information, please check the mail "f2fs-tools: introduce lost+ >> found feature". >> >> Thanks, >> Sheng >> >> Sheng Yong (2): >> f2fs: clean up f2fs_sb_has_xxx functions >> f2fs: introduce lost+found feature >> >> fs/f2fs/data.c | 2 +- >> fs/f2fs/f2fs.h | 53 +++++++++++++++-------------------------------------- >> fs/f2fs/file.c | 6 +++--- >> fs/f2fs/segment.c | 4 ++-- >> fs/f2fs/super.c | 26 +++++++++++++++++++------- >> fs/f2fs/sysfs.c | 4 ++-- >> 6 files changed, 42 insertions(+), 53 deletions(-) >> >> -- >> 2.11.0 > > . > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH 0/2] f2fs: introduce lost+found feature 2018-02-11 1:53 ` Sheng Yong @ 2018-02-12 0:10 ` Jaegeuk Kim 0 siblings, 0 replies; 9+ messages in thread From: Jaegeuk Kim @ 2018-02-12 0:10 UTC (permalink / raw) To: Sheng Yong; +Cc: heyunlei, miaoxie, linux-f2fs-devel On 02/11, Sheng Yong wrote: > Hi, Jaegeuk > > On 2018/2/10 10:50, Jaegeuk Kim wrote: > > On 02/06, Sheng Yong wrote: > > > This patchset introduces lost+found feature in f2fs. If the feature is > > > enabled, f2fs should avoid to encrypting root directory. > > > > In that case, we need to add test_dummy_encryption likewise ext4. > > > If the test_dummy_encryption is only used for some a testcase, I think > it's ok not to add it. The lost_found feature is not enabled by default, > so if we don't specify "-O lost_found" for mkfs, root directory is allowed > to be encrypted. If I miss something, please let me know :) No, we have to be able to test lost_found with encryption. :) Thanks, > > thanks, > Sheng > > > > > > > For more information, please check the mail "f2fs-tools: introduce lost+ > > > found feature". > > > > > > Thanks, > > > Sheng > > > > > > Sheng Yong (2): > > > f2fs: clean up f2fs_sb_has_xxx functions > > > f2fs: introduce lost+found feature > > > > > > fs/f2fs/data.c | 2 +- > > > fs/f2fs/f2fs.h | 53 +++++++++++++++-------------------------------------- > > > fs/f2fs/file.c | 6 +++--- > > > fs/f2fs/segment.c | 4 ++-- > > > fs/f2fs/super.c | 26 +++++++++++++++++++------- > > > fs/f2fs/sysfs.c | 4 ++-- > > > 6 files changed, 42 insertions(+), 53 deletions(-) > > > > > > -- > > > 2.11.0 > > > > . > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-02-12 0:10 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-02-06 4:31 [RFC PATCH 0/2] f2fs: introduce lost+found feature Sheng Yong 2018-02-06 4:31 ` [RFC PATCH 1/2] f2fs: clean up f2fs_sb_has_xxx functions Sheng Yong 2018-02-08 13:21 ` Chao Yu 2018-02-06 4:31 ` [RFC PATCH 2/2] f2fs: introduce lost+found feature Sheng Yong 2018-02-08 13:29 ` Chao Yu 2018-02-09 3:22 ` Sheng Yong 2018-02-10 2:50 ` [RFC PATCH 0/2] " Jaegeuk Kim 2018-02-11 1:53 ` Sheng Yong 2018-02-12 0:10 ` Jaegeuk Kim
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.