summaryrefslogtreecommitdiffstats
path: root/fs/ext4/sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/sysfs.c')
-rw-r--r--fs/ext4/sysfs.c13
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
35typedef enum { 36typedef 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
129static 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) \
129static struct ext4_attr ext4_attr_##_name = { \ 138static 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);
188EXT4_RO_ATTR_ES_UI(errors_count, s_error_count); 197EXT4_RO_ATTR_ES_UI(errors_count, s_error_count);
189EXT4_ATTR(first_error_time, 0444, first_error_time); 198EXT4_ATTR(first_error_time, 0444, first_error_time);
190EXT4_ATTR(last_error_time, 0444, last_error_time); 199EXT4_ATTR(last_error_time, 0444, last_error_time);
200EXT4_ATTR(journal_task, 0444, journal_task);
191 201
192static unsigned int old_bump_val = 128; 202static unsigned int old_bump_val = 128;
193EXT4_ATTR_PTR(max_writeback_mb_bump, 0444, pointer_ui, &old_bump_val); 203EXT4_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;