Commit bb15cea2 authored by Theodore Ts'o's avatar Theodore Ts'o

ext4: rename s_error_work to s_sb_upd_work

The most common use that s_error_work will get scheduled is now the
periodic update of the superblock.  So rename it to s_sb_upd_work.

Also rename the function flush_stashed_error_work() to
update_super_work().
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent ff0722de
...@@ -1698,10 +1698,13 @@ struct ext4_sb_info { ...@@ -1698,10 +1698,13 @@ struct ext4_sb_info {
const char *s_last_error_func; const char *s_last_error_func;
time64_t s_last_error_time; time64_t s_last_error_time;
/* /*
* If we are in a context where we cannot update error information in * If we are in a context where we cannot update the on-disk
* the on-disk superblock, we queue this work to do it. * superblock, we queue the work here. This is used to update
* the error information in the superblock, and for periodic
* updates of the superblock called from the commit callback
* function.
*/ */
struct work_struct s_error_work; struct work_struct s_sb_upd_work;
/* Ext4 fast commit sub transaction ID */ /* Ext4 fast commit sub transaction ID */
atomic_t s_fc_subtid; atomic_t s_fc_subtid;
......
...@@ -481,7 +481,7 @@ static void ext4_maybe_update_superblock(struct super_block *sb) ...@@ -481,7 +481,7 @@ static void ext4_maybe_update_superblock(struct super_block *sb)
diff_size = lifetime_write_kbytes - le64_to_cpu(es->s_kbytes_written); diff_size = lifetime_write_kbytes - le64_to_cpu(es->s_kbytes_written);
if (diff_size > EXT4_SB_REFRESH_INTERVAL_KB) if (diff_size > EXT4_SB_REFRESH_INTERVAL_KB)
schedule_work(&EXT4_SB(sb)->s_error_work); schedule_work(&EXT4_SB(sb)->s_sb_upd_work);
} }
/* /*
...@@ -723,7 +723,7 @@ static void ext4_handle_error(struct super_block *sb, bool force_ro, int error, ...@@ -723,7 +723,7 @@ static void ext4_handle_error(struct super_block *sb, bool force_ro, int error,
* defer superblock flushing to a workqueue. * defer superblock flushing to a workqueue.
*/ */
if (continue_fs && journal) if (continue_fs && journal)
schedule_work(&EXT4_SB(sb)->s_error_work); schedule_work(&EXT4_SB(sb)->s_sb_upd_work);
else else
ext4_commit_super(sb); ext4_commit_super(sb);
} }
...@@ -750,10 +750,10 @@ static void ext4_handle_error(struct super_block *sb, bool force_ro, int error, ...@@ -750,10 +750,10 @@ static void ext4_handle_error(struct super_block *sb, bool force_ro, int error,
sb->s_flags |= SB_RDONLY; sb->s_flags |= SB_RDONLY;
} }
static void flush_stashed_error_work(struct work_struct *work) static void update_super_work(struct work_struct *work)
{ {
struct ext4_sb_info *sbi = container_of(work, struct ext4_sb_info, struct ext4_sb_info *sbi = container_of(work, struct ext4_sb_info,
s_error_work); s_sb_upd_work);
journal_t *journal = sbi->s_journal; journal_t *journal = sbi->s_journal;
handle_t *handle; handle_t *handle;
...@@ -1078,7 +1078,7 @@ __acquires(bitlock) ...@@ -1078,7 +1078,7 @@ __acquires(bitlock)
if (!bdev_read_only(sb->s_bdev)) { if (!bdev_read_only(sb->s_bdev)) {
save_error_info(sb, EFSCORRUPTED, ino, block, function, save_error_info(sb, EFSCORRUPTED, ino, block, function,
line); line);
schedule_work(&EXT4_SB(sb)->s_error_work); schedule_work(&EXT4_SB(sb)->s_sb_upd_work);
} }
return; return;
} }
...@@ -1318,10 +1318,10 @@ static void ext4_put_super(struct super_block *sb) ...@@ -1318,10 +1318,10 @@ static void ext4_put_super(struct super_block *sb)
* Unregister sysfs before destroying jbd2 journal. * Unregister sysfs before destroying jbd2 journal.
* Since we could still access attr_journal_task attribute via sysfs * Since we could still access attr_journal_task attribute via sysfs
* path which could have sbi->s_journal->j_task as NULL * path which could have sbi->s_journal->j_task as NULL
* Unregister sysfs before flush sbi->s_error_work. * Unregister sysfs before flush sbi->s_sb_upd_work.
* Since user may read /proc/fs/ext4/xx/mb_groups during umount, If * Since user may read /proc/fs/ext4/xx/mb_groups during umount, If
* read metadata verify failed then will queue error work. * read metadata verify failed then will queue error work.
* flush_stashed_error_work will call start_this_handle may trigger * update_super_work will call start_this_handle may trigger
* BUG_ON. * BUG_ON.
*/ */
ext4_unregister_sysfs(sb); ext4_unregister_sysfs(sb);
...@@ -1333,7 +1333,7 @@ static void ext4_put_super(struct super_block *sb) ...@@ -1333,7 +1333,7 @@ static void ext4_put_super(struct super_block *sb)
ext4_unregister_li_request(sb); ext4_unregister_li_request(sb);
ext4_quotas_off(sb, EXT4_MAXQUOTAS); ext4_quotas_off(sb, EXT4_MAXQUOTAS);
flush_work(&sbi->s_error_work); flush_work(&sbi->s_sb_upd_work);
destroy_workqueue(sbi->rsv_conversion_wq); destroy_workqueue(sbi->rsv_conversion_wq);
ext4_release_orphan_info(sb); ext4_release_orphan_info(sb);
...@@ -4998,8 +4998,8 @@ static int ext4_load_and_init_journal(struct super_block *sb, ...@@ -4998,8 +4998,8 @@ static int ext4_load_and_init_journal(struct super_block *sb,
return 0; return 0;
out: out:
/* flush s_error_work before journal destroy. */ /* flush s_sb_upd_work before destroying the journal. */
flush_work(&sbi->s_error_work); flush_work(&sbi->s_sb_upd_work);
jbd2_journal_destroy(sbi->s_journal); jbd2_journal_destroy(sbi->s_journal);
sbi->s_journal = NULL; sbi->s_journal = NULL;
return -EINVAL; return -EINVAL;
...@@ -5322,7 +5322,7 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb) ...@@ -5322,7 +5322,7 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
timer_setup(&sbi->s_err_report, print_daily_error_info, 0); timer_setup(&sbi->s_err_report, print_daily_error_info, 0);
spin_lock_init(&sbi->s_error_lock); spin_lock_init(&sbi->s_error_lock);
INIT_WORK(&sbi->s_error_work, flush_stashed_error_work); INIT_WORK(&sbi->s_sb_upd_work, update_super_work);
err = ext4_group_desc_init(sb, es, logical_sb_block, &first_not_zeroed); err = ext4_group_desc_init(sb, es, logical_sb_block, &first_not_zeroed);
if (err) if (err)
...@@ -5666,16 +5666,16 @@ failed_mount9: __maybe_unused ...@@ -5666,16 +5666,16 @@ failed_mount9: __maybe_unused
sbi->s_ea_block_cache = NULL; sbi->s_ea_block_cache = NULL;
if (sbi->s_journal) { if (sbi->s_journal) {
/* flush s_error_work before journal destroy. */ /* flush s_sb_upd_work before journal destroy. */
flush_work(&sbi->s_error_work); flush_work(&sbi->s_sb_upd_work);
jbd2_journal_destroy(sbi->s_journal); jbd2_journal_destroy(sbi->s_journal);
sbi->s_journal = NULL; sbi->s_journal = NULL;
} }
failed_mount3a: failed_mount3a:
ext4_es_unregister_shrinker(sbi); ext4_es_unregister_shrinker(sbi);
failed_mount3: failed_mount3:
/* flush s_error_work before sbi destroy */ /* flush s_sb_upd_work before sbi destroy */
flush_work(&sbi->s_error_work); flush_work(&sbi->s_sb_upd_work);
del_timer_sync(&sbi->s_err_report); del_timer_sync(&sbi->s_err_report);
ext4_stop_mmpd(sbi); ext4_stop_mmpd(sbi);
ext4_group_desc_free(sbi); ext4_group_desc_free(sbi);
...@@ -6551,7 +6551,7 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb) ...@@ -6551,7 +6551,7 @@ static int __ext4_remount(struct fs_context *fc, struct super_block *sb)
} }
/* Flush outstanding errors before changing fs state */ /* Flush outstanding errors before changing fs state */
flush_work(&sbi->s_error_work); flush_work(&sbi->s_sb_upd_work);
if ((bool)(fc->sb_flags & SB_RDONLY) != sb_rdonly(sb)) { if ((bool)(fc->sb_flags & SB_RDONLY) != sb_rdonly(sb)) {
if (ext4_forced_shutdown(sb)) { if (ext4_forced_shutdown(sb)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment