|
@@ -116,6 +116,9 @@ static ssize_t features_show(struct f2fs_attr *a,
|
|
|
if (f2fs_sb_has_inode_crtime(sb))
|
|
|
len += snprintf(buf + len, PAGE_SIZE - len, "%s%s",
|
|
|
len ? ", " : "", "inode_crtime");
|
|
|
+ if (f2fs_sb_has_lost_found(sb))
|
|
|
+ len += snprintf(buf + len, PAGE_SIZE - len, "%s%s",
|
|
|
+ len ? ", " : "", "lost_found");
|
|
|
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
|
|
|
return len;
|
|
|
}
|
|
@@ -292,6 +295,7 @@ enum feat_id {
|
|
|
FEAT_FLEXIBLE_INLINE_XATTR,
|
|
|
FEAT_QUOTA_INO,
|
|
|
FEAT_INODE_CRTIME,
|
|
|
+ FEAT_LOST_FOUND,
|
|
|
};
|
|
|
|
|
|
static ssize_t f2fs_feature_show(struct f2fs_attr *a,
|
|
@@ -307,6 +311,7 @@ static ssize_t f2fs_feature_show(struct f2fs_attr *a,
|
|
|
case FEAT_FLEXIBLE_INLINE_XATTR:
|
|
|
case FEAT_QUOTA_INO:
|
|
|
case FEAT_INODE_CRTIME:
|
|
|
+ case FEAT_LOST_FOUND:
|
|
|
return snprintf(buf, PAGE_SIZE, "supported\n");
|
|
|
}
|
|
|
return 0;
|
|
@@ -386,6 +391,7 @@ F2FS_FEATURE_RO_ATTR(inode_checksum, FEAT_INODE_CHECKSUM);
|
|
|
F2FS_FEATURE_RO_ATTR(flexible_inline_xattr, FEAT_FLEXIBLE_INLINE_XATTR);
|
|
|
F2FS_FEATURE_RO_ATTR(quota_ino, FEAT_QUOTA_INO);
|
|
|
F2FS_FEATURE_RO_ATTR(inode_crtime, FEAT_INODE_CRTIME);
|
|
|
+F2FS_FEATURE_RO_ATTR(lost_found, FEAT_LOST_FOUND);
|
|
|
|
|
|
#define ATTR_LIST(name) (&f2fs_attr_##name.attr)
|
|
|
static struct attribute *f2fs_attrs[] = {
|
|
@@ -441,6 +447,7 @@ static struct attribute *f2fs_feat_attrs[] = {
|
|
|
ATTR_LIST(flexible_inline_xattr),
|
|
|
ATTR_LIST(quota_ino),
|
|
|
ATTR_LIST(inode_crtime),
|
|
|
+ ATTR_LIST(lost_found),
|
|
|
NULL,
|
|
|
};
|
|
|
|