* [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
* [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 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
* 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.