#include <linux/time.h>
#include <linux/fs.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/part_stat.h>
#include "ext4.h"
#include "ext4_jbd2.h"
attr_id_t;
attr_ptr_t;
static const char proc_dirname[] = …;
static struct proc_dir_entry *ext4_proc_root;
struct ext4_attr { … };
static ssize_t session_write_kbytes_show(struct ext4_sb_info *sbi, char *buf)
{ … }
static ssize_t lifetime_write_kbytes_show(struct ext4_sb_info *sbi, char *buf)
{ … }
static ssize_t inode_readahead_blks_store(struct ext4_sb_info *sbi,
const char *buf, size_t count)
{ … }
static ssize_t reserved_clusters_store(struct ext4_sb_info *sbi,
const char *buf, size_t count)
{ … }
static ssize_t trigger_test_error(struct ext4_sb_info *sbi,
const char *buf, size_t count)
{ … }
static ssize_t journal_task_show(struct ext4_sb_info *sbi, char *buf)
{ … }
#define EXT4_ATTR(_name,_mode,_id) …
#define EXT4_ATTR_FUNC(_name,_mode) …
#define EXT4_ATTR_FEATURE(_name) …
#define EXT4_ATTR_OFFSET(_name,_mode,_id,_struct,_elname) …
#define EXT4_ATTR_STRING(_name,_mode,_size,_struct,_elname) …
#define EXT4_RO_ATTR_ES_UI(_name,_elname) …
#define EXT4_RO_ATTR_ES_U8(_name,_elname) …
#define EXT4_RO_ATTR_ES_U64(_name,_elname) …
#define EXT4_RO_ATTR_ES_STRING(_name,_elname,_size) …
#define EXT4_RW_ATTR_SBI_PI(_name,_elname) …
#define EXT4_RW_ATTR_SBI_UI(_name,_elname) …
#define EXT4_RW_ATTR_SBI_UL(_name,_elname) …
#define EXT4_RO_ATTR_SBI_ATOMIC(_name,_elname) …
#define EXT4_ATTR_PTR(_name,_mode,_id,_ptr) …
#define ATTR_LIST(name) …
EXT4_ATTR_FUNC(…);
EXT4_ATTR_FUNC(…);
EXT4_ATTR_FUNC(…);
EXT4_ATTR_FUNC(…);
EXT4_ATTR_FUNC(…);
EXT4_ATTR_OFFSET(…);
EXT4_ATTR_OFFSET(…);
EXT4_ATTR_OFFSET(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_ATTR(…);
EXT4_RW_ATTR_SBI_PI(…);
EXT4_RW_ATTR_SBI_PI(…);
EXT4_RW_ATTR_SBI_PI(…);
EXT4_RW_ATTR_SBI_PI(…);
EXT4_RW_ATTR_SBI_PI(…);
EXT4_RW_ATTR_SBI_PI(…);
#ifdef CONFIG_EXT4_DEBUG
EXT4_RW_ATTR_SBI_UL(…);
#endif
EXT4_RO_ATTR_SBI_ATOMIC(…);
EXT4_RO_ATTR_SBI_ATOMIC(…);
EXT4_RO_ATTR_ES_UI(…);
EXT4_RO_ATTR_ES_U8(…);
EXT4_RO_ATTR_ES_U8(…);
EXT4_RO_ATTR_ES_UI(…);
EXT4_RO_ATTR_ES_UI(…);
EXT4_RO_ATTR_ES_U64(…);
EXT4_RO_ATTR_ES_U64(…);
EXT4_RO_ATTR_ES_UI(…);
EXT4_RO_ATTR_ES_UI(…);
EXT4_RO_ATTR_ES_STRING(…);
EXT4_RO_ATTR_ES_STRING(…);
EXT4_ATTR(…);
EXT4_ATTR(…);
EXT4_ATTR(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UI(…);
EXT4_RW_ATTR_SBI_UL(…);
static unsigned int old_bump_val = …;
EXT4_ATTR_PTR(…);
static struct attribute *ext4_attrs[] = …;
ATTRIBUTE_GROUPS(…);
EXT4_ATTR_FEATURE(…);
EXT4_ATTR_FEATURE(…);
EXT4_ATTR_FEATURE(…);
#ifdef CONFIG_FS_ENCRYPTION
EXT4_ATTR_FEATURE(…);
EXT4_ATTR_FEATURE(…);
#endif
#if IS_ENABLED(CONFIG_UNICODE)
EXT4_ATTR_FEATURE(…);
#endif
#ifdef CONFIG_FS_VERITY
EXT4_ATTR_FEATURE(…);
#endif
EXT4_ATTR_FEATURE(…);
EXT4_ATTR_FEATURE(…);
#if IS_ENABLED(CONFIG_UNICODE) && defined(CONFIG_FS_ENCRYPTION)
EXT4_ATTR_FEATURE(…);
#endif
static struct attribute *ext4_feat_attrs[] = …;
ATTRIBUTE_GROUPS(…);
static void *calc_ptr(struct ext4_attr *a, struct ext4_sb_info *sbi)
{ … }
static ssize_t __print_tstamp(char *buf, __le32 lo, __u8 hi)
{ … }
#define print_tstamp(buf, es, tstamp) …
static ssize_t ext4_generic_attr_show(struct ext4_attr *a,
struct ext4_sb_info *sbi, char *buf)
{ … }
static ssize_t ext4_attr_show(struct kobject *kobj,
struct attribute *attr, char *buf)
{ … }
static ssize_t ext4_generic_attr_store(struct ext4_attr *a,
struct ext4_sb_info *sbi,
const char *buf, size_t len)
{ … }
static ssize_t ext4_attr_store(struct kobject *kobj,
struct attribute *attr,
const char *buf, size_t len)
{ … }
static void ext4_sb_release(struct kobject *kobj)
{ … }
static void ext4_feat_release(struct kobject *kobj)
{ … }
static const struct sysfs_ops ext4_attr_ops = …;
static const struct kobj_type ext4_sb_ktype = …;
static const struct kobj_type ext4_feat_ktype = …;
void ext4_notify_error_sysfs(struct ext4_sb_info *sbi)
{ … }
static struct kobject *ext4_root;
static struct kobject *ext4_feat;
int ext4_register_sysfs(struct super_block *sb)
{ … }
void ext4_unregister_sysfs(struct super_block *sb)
{ … }
int __init ext4_init_sysfs(void)
{ … }
void ext4_exit_sysfs(void)
{ … }