attr_feature,
        attr_pointer_ui,
        attr_pointer_atomic,
+       attr_journal_task,
 } attr_id_t;
 
 typedef enum {
        return count;
 }
 
+static ssize_t journal_task_show(struct ext4_sb_info *sbi, char *buf)
+{
+       if (!sbi->s_journal)
+               return snprintf(buf, PAGE_SIZE, "<none>\n");
+       return snprintf(buf, PAGE_SIZE, "%d\n",
+                       task_pid_vnr(sbi->s_journal->j_task));
+}
+
 #define EXT4_ATTR(_name,_mode,_id)                                     \
 static struct ext4_attr ext4_attr_##_name = {                          \
        .attr = {.name = __stringify(_name), .mode = _mode },           \
 EXT4_RO_ATTR_ES_UI(errors_count, s_error_count);
 EXT4_ATTR(first_error_time, 0444, first_error_time);
 EXT4_ATTR(last_error_time, 0444, last_error_time);
+EXT4_ATTR(journal_task, 0444, journal_task);
 
 static unsigned int old_bump_val = 128;
 EXT4_ATTR_PTR(max_writeback_mb_bump, 0444, pointer_ui, &old_bump_val);
        ATTR_LIST(errors_count),
        ATTR_LIST(first_error_time),
        ATTR_LIST(last_error_time),
+       ATTR_LIST(journal_task),
        NULL,
 };
 
                return print_tstamp(buf, sbi->s_es, s_first_error_time);
        case attr_last_error_time:
                return print_tstamp(buf, sbi->s_es, s_last_error_time);
+       case attr_journal_task:
+               return journal_task_show(sbi, buf);
        }
 
        return 0;