diff options
Diffstat (limited to 'fs/ext4/sysfs.c')
-rw-r--r-- | fs/ext4/sysfs.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/ext4/sysfs.c b/fs/ext4/sysfs.c index 5e4e78fc0b3a..616c075da062 100644 --- a/fs/ext4/sysfs.c +++ b/fs/ext4/sysfs.c | |||
@@ -30,6 +30,7 @@ typedef enum { | |||
30 | attr_feature, | 30 | attr_feature, |
31 | attr_pointer_ui, | 31 | attr_pointer_ui, |
32 | attr_pointer_atomic, | 32 | attr_pointer_atomic, |
33 | attr_journal_task, | ||
33 | } attr_id_t; | 34 | } attr_id_t; |
34 | 35 | ||
35 | typedef enum { | 36 | typedef enum { |
@@ -125,6 +126,14 @@ static ssize_t trigger_test_error(struct ext4_sb_info *sbi, | |||
125 | return count; | 126 | return count; |
126 | } | 127 | } |
127 | 128 | ||
129 | static ssize_t journal_task_show(struct ext4_sb_info *sbi, char *buf) | ||
130 | { | ||
131 | if (!sbi->s_journal) | ||
132 | return snprintf(buf, PAGE_SIZE, "<none>\n"); | ||
133 | return snprintf(buf, PAGE_SIZE, "%d\n", | ||
134 | task_pid_vnr(sbi->s_journal->j_task)); | ||
135 | } | ||
136 | |||
128 | #define EXT4_ATTR(_name,_mode,_id) \ | 137 | #define EXT4_ATTR(_name,_mode,_id) \ |
129 | static struct ext4_attr ext4_attr_##_name = { \ | 138 | static struct ext4_attr ext4_attr_##_name = { \ |
130 | .attr = {.name = __stringify(_name), .mode = _mode }, \ | 139 | .attr = {.name = __stringify(_name), .mode = _mode }, \ |
@@ -188,6 +197,7 @@ EXT4_RW_ATTR_SBI_UI(msg_ratelimit_burst, s_msg_ratelimit_state.burst); | |||
188 | EXT4_RO_ATTR_ES_UI(errors_count, s_error_count); | 197 | EXT4_RO_ATTR_ES_UI(errors_count, s_error_count); |
189 | EXT4_ATTR(first_error_time, 0444, first_error_time); | 198 | EXT4_ATTR(first_error_time, 0444, first_error_time); |
190 | EXT4_ATTR(last_error_time, 0444, last_error_time); | 199 | EXT4_ATTR(last_error_time, 0444, last_error_time); |
200 | EXT4_ATTR(journal_task, 0444, journal_task); | ||
191 | 201 | ||
192 | static unsigned int old_bump_val = 128; | 202 | static unsigned int old_bump_val = 128; |
193 | EXT4_ATTR_PTR(max_writeback_mb_bump, 0444, pointer_ui, &old_bump_val); | 203 | EXT4_ATTR_PTR(max_writeback_mb_bump, 0444, pointer_ui, &old_bump_val); |
@@ -217,6 +227,7 @@ static struct attribute *ext4_attrs[] = { | |||
217 | ATTR_LIST(errors_count), | 227 | ATTR_LIST(errors_count), |
218 | ATTR_LIST(first_error_time), | 228 | ATTR_LIST(first_error_time), |
219 | ATTR_LIST(last_error_time), | 229 | ATTR_LIST(last_error_time), |
230 | ATTR_LIST(journal_task), | ||
220 | NULL, | 231 | NULL, |
221 | }; | 232 | }; |
222 | 233 | ||
@@ -304,6 +315,8 @@ static ssize_t ext4_attr_show(struct kobject *kobj, | |||
304 | return print_tstamp(buf, sbi->s_es, s_first_error_time); | 315 | return print_tstamp(buf, sbi->s_es, s_first_error_time); |
305 | case attr_last_error_time: | 316 | case attr_last_error_time: |
306 | return print_tstamp(buf, sbi->s_es, s_last_error_time); | 317 | return print_tstamp(buf, sbi->s_es, s_last_error_time); |
318 | case attr_journal_task: | ||
319 | return journal_task_show(sbi, buf); | ||
307 | } | 320 | } |
308 | 321 | ||
309 | return 0; | 322 | return 0; |