diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/fs.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index caa8e8879f4b..1f4a1c570a2a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -3739,12 +3739,35 @@ static inline bool generic_ci_validate_strict_name(struct inode *dir, } #endif +static inline struct unicode_map *sb_encoding(const struct super_block *sb) +{ +#if IS_ENABLED(CONFIG_UNICODE) + return sb->s_encoding; +#else + return NULL; +#endif +} + static inline bool sb_has_encoding(const struct super_block *sb) { + return !!sb_encoding(sb); +} + +/* + * Compare if two super blocks have the same encoding and flags + */ +static inline bool sb_same_encoding(const struct super_block *sb1, + const struct super_block *sb2) +{ #if IS_ENABLED(CONFIG_UNICODE) - return !!sb->s_encoding; + if (sb1->s_encoding == sb2->s_encoding) + return true; + + return (sb1->s_encoding && sb2->s_encoding && + (sb1->s_encoding->version == sb2->s_encoding->version) && + (sb1->s_encoding_flags == sb2->s_encoding_flags)); #else - return false; + return true; #endif } |
