2023-08-07 12:11:32

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 3/4] ocfs2: stop using bdev->bd_super for journal error logging

All ocfs2 journal error handling and logging is based on buffer_heads,
and the owning inode and thus super_block can be retrieved through
bh->b_assoc_map->host. Switch to using that to remove the last users
of bdev->bd_super.

Signed-off-by: Christoph Hellwig <[email protected]>
---
fs/ocfs2/journal.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
index 25d8072ccfce46..c19c730c26e270 100644
--- a/fs/ocfs2/journal.c
+++ b/fs/ocfs2/journal.c
@@ -557,7 +557,7 @@ static void ocfs2_abort_trigger(struct jbd2_buffer_trigger_type *triggers,
(unsigned long)bh,
(unsigned long long)bh->b_blocknr);

- ocfs2_error(bh->b_bdev->bd_super,
+ ocfs2_error(bh->b_assoc_map->host->i_sb,
"JBD2 has aborted our journal, ocfs2 cannot continue\n");
}

@@ -780,14 +780,14 @@ void ocfs2_journal_dirty(handle_t *handle, struct buffer_head *bh)
mlog_errno(status);
if (!is_handle_aborted(handle)) {
journal_t *journal = handle->h_transaction->t_journal;
- struct super_block *sb = bh->b_bdev->bd_super;

mlog(ML_ERROR, "jbd2_journal_dirty_metadata failed. "
"Aborting transaction and journal.\n");
handle->h_err = status;
jbd2_journal_abort_handle(handle);
jbd2_journal_abort(journal, status);
- ocfs2_abort(sb, "Journal already aborted.\n");
+ ocfs2_abort(bh->b_assoc_map->host->i_sb,
+ "Journal already aborted.\n");
}
}
}
--
2.39.2



2023-08-08 02:10:03

by Joseph Qi

[permalink] [raw]
Subject: Re: [PATCH 3/4] ocfs2: stop using bdev->bd_super for journal error logging



On 8/7/23 7:26 PM, Christoph Hellwig wrote:
> All ocfs2 journal error handling and logging is based on buffer_heads,
> and the owning inode and thus super_block can be retrieved through
> bh->b_assoc_map->host. Switch to using that to remove the last users
> of bdev->bd_super.
>
> Signed-off-by: Christoph Hellwig <[email protected]>

Looks fine.
Acked-by: Joseph Qi <[email protected]>

> ---
> fs/ocfs2/journal.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c
> index 25d8072ccfce46..c19c730c26e270 100644
> --- a/fs/ocfs2/journal.c
> +++ b/fs/ocfs2/journal.c
> @@ -557,7 +557,7 @@ static void ocfs2_abort_trigger(struct jbd2_buffer_trigger_type *triggers,
> (unsigned long)bh,
> (unsigned long long)bh->b_blocknr);
>
> - ocfs2_error(bh->b_bdev->bd_super,
> + ocfs2_error(bh->b_assoc_map->host->i_sb,
> "JBD2 has aborted our journal, ocfs2 cannot continue\n");
> }
>
> @@ -780,14 +780,14 @@ void ocfs2_journal_dirty(handle_t *handle, struct buffer_head *bh)
> mlog_errno(status);
> if (!is_handle_aborted(handle)) {
> journal_t *journal = handle->h_transaction->t_journal;
> - struct super_block *sb = bh->b_bdev->bd_super;
>
> mlog(ML_ERROR, "jbd2_journal_dirty_metadata failed. "
> "Aborting transaction and journal.\n");
> handle->h_err = status;
> jbd2_journal_abort_handle(handle);
> jbd2_journal_abort(journal, status);
> - ocfs2_abort(sb, "Journal already aborted.\n");
> + ocfs2_abort(bh->b_assoc_map->host->i_sb,
> + "Journal already aborted.\n");
> }
> }
> }