tmpfs: Expose filesystem features via sysfs

Expose filesystem features through sysfs, so userspace can query if
tmpfs support casefold.

This follows the same setup as defined by ext4 and f2fs to expose
casefold support to userspace.

Signed-off-by: André Almeida <andrealmeid@igalia.com>
Link: https://lore.kernel.org/r/20241021-tonyk-tmpfs-v8-8-f443d5814194@igalia.com
Reviewed-by: Gabriel Krisman Bertazi <krisman@suse.de>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
André Almeida 2024-10-21 13:37:24 -03:00 committed by Christian Brauner
parent 5cd9aecbc7
commit 5132f08bd3
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2
1 changed files with 37 additions and 0 deletions

View File

@ -5546,3 +5546,40 @@ struct page *shmem_read_mapping_page_gfp(struct address_space *mapping,
return page;
}
EXPORT_SYMBOL_GPL(shmem_read_mapping_page_gfp);
#if defined(CONFIG_SYSFS) && defined(CONFIG_TMPFS)
#if IS_ENABLED(CONFIG_UNICODE)
static DEVICE_STRING_ATTR_RO(casefold, 0444, "supported");
#endif
static struct attribute *tmpfs_attributes[] = {
#if IS_ENABLED(CONFIG_UNICODE)
&dev_attr_casefold.attr.attr,
#endif
NULL
};
static const struct attribute_group tmpfs_attribute_group = {
.attrs = tmpfs_attributes,
.name = "features"
};
static struct kobject *tmpfs_kobj;
static int __init tmpfs_sysfs_init(void)
{
int ret;
tmpfs_kobj = kobject_create_and_add("tmpfs", fs_kobj);
if (!tmpfs_kobj)
return -ENOMEM;
ret = sysfs_create_group(tmpfs_kobj, &tmpfs_attribute_group);
if (ret)
kobject_put(tmpfs_kobj);
return ret;
}
fs_initcall(tmpfs_sysfs_init);
#endif /* CONFIG_SYSFS && CONFIG_TMPFS */