]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/f2fs/sysfs.c
Merge tag 'rpmsg-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson...
[linux.git] / fs / f2fs / sysfs.c
index 0cd64f99406859e49fc6bd81c56433ca37f2c182..b558b64a4c9ca33eee88896bc53ab4f07036a22f 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/proc_fs.h>
 #include <linux/f2fs_fs.h>
 #include <linux/seq_file.h>
+#include <linux/unicode.h>
 
 #include "f2fs.h"
 #include "segment.h"
@@ -81,6 +82,19 @@ static ssize_t unusable_show(struct f2fs_attr *a,
                (unsigned long long)unusable);
 }
 
+static ssize_t encoding_show(struct f2fs_attr *a,
+               struct f2fs_sb_info *sbi, char *buf)
+{
+#ifdef CONFIG_UNICODE
+       if (f2fs_sb_has_casefold(sbi))
+               return snprintf(buf, PAGE_SIZE, "%s (%d.%d.%d)\n",
+                       sbi->s_encoding->charset,
+                       (sbi->s_encoding->version >> 16) & 0xff,
+                       (sbi->s_encoding->version >> 8) & 0xff,
+                       sbi->s_encoding->version & 0xff);
+#endif
+       return snprintf(buf, PAGE_SIZE, "(none)");
+}
 
 static ssize_t lifetime_write_kbytes_show(struct f2fs_attr *a,
                struct f2fs_sb_info *sbi, char *buf)
@@ -137,6 +151,9 @@ static ssize_t features_show(struct f2fs_attr *a,
        if (f2fs_sb_has_sb_chksum(sbi))
                len += snprintf(buf + len, PAGE_SIZE - len, "%s%s",
                                len ? ", " : "", "sb_checksum");
+       if (f2fs_sb_has_casefold(sbi))
+               len += snprintf(buf + len, PAGE_SIZE - len, "%s%s",
+                               len ? ", " : "", "casefold");
        len += snprintf(buf + len, PAGE_SIZE - len, "\n");
        return len;
 }
@@ -369,6 +386,7 @@ enum feat_id {
        FEAT_LOST_FOUND,
        FEAT_VERITY,
        FEAT_SB_CHECKSUM,
+       FEAT_CASEFOLD,
 };
 
 static ssize_t f2fs_feature_show(struct f2fs_attr *a,
@@ -387,6 +405,7 @@ static ssize_t f2fs_feature_show(struct f2fs_attr *a,
        case FEAT_LOST_FOUND:
        case FEAT_VERITY:
        case FEAT_SB_CHECKSUM:
+       case FEAT_CASEFOLD:
                return snprintf(buf, PAGE_SIZE, "supported\n");
        }
        return 0;
@@ -460,6 +479,7 @@ F2FS_GENERAL_RO_ATTR(lifetime_write_kbytes);
 F2FS_GENERAL_RO_ATTR(features);
 F2FS_GENERAL_RO_ATTR(current_reserved_blocks);
 F2FS_GENERAL_RO_ATTR(unusable);
+F2FS_GENERAL_RO_ATTR(encoding);
 
 #ifdef CONFIG_FS_ENCRYPTION
 F2FS_FEATURE_RO_ATTR(encryption, FEAT_CRYPTO);
@@ -479,6 +499,7 @@ F2FS_FEATURE_RO_ATTR(lost_found, FEAT_LOST_FOUND);
 F2FS_FEATURE_RO_ATTR(verity, FEAT_VERITY);
 #endif
 F2FS_FEATURE_RO_ATTR(sb_checksum, FEAT_SB_CHECKSUM);
+F2FS_FEATURE_RO_ATTR(casefold, FEAT_CASEFOLD);
 
 #define ATTR_LIST(name) (&f2fs_attr_##name.attr)
 static struct attribute *f2fs_attrs[] = {
@@ -523,6 +544,7 @@ static struct attribute *f2fs_attrs[] = {
        ATTR_LIST(features),
        ATTR_LIST(reserved_blocks),
        ATTR_LIST(current_reserved_blocks),
+       ATTR_LIST(encoding),
        NULL,
 };
 ATTRIBUTE_GROUPS(f2fs);
@@ -546,6 +568,7 @@ static struct attribute *f2fs_feat_attrs[] = {
        ATTR_LIST(verity),
 #endif
        ATTR_LIST(sb_checksum),
+       ATTR_LIST(casefold),
        NULL,
 };
 ATTRIBUTE_GROUPS(f2fs_feat);