From: Christoph Hellwig <hch@lst.de>
To: Andrey Albershteyn <aalbersh@kernel.org>
Cc: linux-xfs@vger.kernel.org
Subject: [PATCH 15/25] logprint: factor out a xlog_print_process_region helper
Date: Fri, 28 Nov 2025 07:29:52 +0100 [thread overview]
Message-ID: <20251128063007.1495036-16-hch@lst.de> (raw)
In-Reply-To: <20251128063007.1495036-1-hch@lst.de>
Start splitting up xlog_print_record by moving the switch on the item
types inside the inner loop into a self-contained helper.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
logprint/log_misc.c | 187 +++++++++++++++++---------------------------
1 file changed, 70 insertions(+), 117 deletions(-)
diff --git a/logprint/log_misc.c b/logprint/log_misc.c
index c4486e5f6a14..f10dc57a1edb 100644
--- a/logprint/log_misc.c
+++ b/logprint/log_misc.c
@@ -902,6 +902,69 @@ print_lsn(
BLOCK_LSN(be64_to_cpu(*lsn)));
}
+static int
+xlog_print_region(
+ struct xlog *log,
+ char **ptr,
+ struct xlog_op_header *ophdr,
+ int *i,
+ int num_ops,
+ bool continued)
+{
+ uint32_t len = be32_to_cpu(ophdr->oh_len);
+
+ if (*(uint *)*ptr == XFS_TRANS_HEADER_MAGIC)
+ return xlog_print_trans_header(ptr, len);
+
+ switch (*(unsigned short *)*ptr) {
+ case XFS_LI_BUF:
+ return xlog_print_trans_buffer(ptr, len, i, num_ops);
+ case XFS_LI_ICREATE:
+ return xlog_print_trans_icreate(ptr, len, i, num_ops);
+ case XFS_LI_INODE:
+ return xlog_print_trans_inode(log, ptr, len, i, num_ops,
+ continued);
+ case XFS_LI_DQUOT:
+ return xlog_print_trans_dquot(ptr, len, i, num_ops);
+ case XFS_LI_EFI_RT:
+ case XFS_LI_EFI:
+ return xlog_print_trans_efi(ptr, len, continued);
+ case XFS_LI_EFD_RT:
+ case XFS_LI_EFD:
+ return xlog_print_trans_efd(ptr, len);
+ case XFS_LI_ATTRI:
+ return xlog_print_trans_attri(ptr, len, i);
+ case XFS_LI_ATTRD:
+ return xlog_print_trans_attrd(ptr, len);
+ case XFS_LI_RUI_RT:
+ case XFS_LI_RUI:
+ return xlog_print_trans_rui(ptr, len, continued);
+ case XFS_LI_RUD_RT:
+ case XFS_LI_RUD:
+ return xlog_print_trans_rud(ptr, len);
+ case XFS_LI_CUI_RT:
+ case XFS_LI_CUI:
+ return xlog_print_trans_cui(ptr, len, continued);
+ case XFS_LI_CUD_RT:
+ case XFS_LI_CUD:
+ return xlog_print_trans_cud(ptr, len);
+ case XFS_LI_BUI:
+ return xlog_print_trans_bui(ptr, len, continued);
+ case XFS_LI_BUD:
+ return xlog_print_trans_bud(ptr, len);
+ case XFS_LI_XMI:
+ return xlog_print_trans_xmi(ptr, len, continued);
+ case XFS_LI_XMD:
+ return xlog_print_trans_xmd(ptr, len);
+ case XFS_LI_QUOTAOFF:
+ return xlog_print_trans_qoff(ptr, len);
+ case XLOG_UNMOUNT_TYPE:
+ printf(_("Unmount filesystem\n"));
+ return 0;
+ default:
+ return -1;
+ }
+}
static int
xlog_print_record(
@@ -1046,118 +1109,9 @@ xlog_print_record(
}
if (be32_to_cpu(op_head->oh_len) != 0) {
- if (*(uint *)ptr == XFS_TRANS_HEADER_MAGIC) {
- skip = xlog_print_trans_header(&ptr,
- be32_to_cpu(op_head->oh_len));
- } else {
- switch (*(unsigned short *)ptr) {
- case XFS_LI_BUF: {
- skip = xlog_print_trans_buffer(&ptr,
- be32_to_cpu(op_head->oh_len),
- &i, num_ops);
- break;
- }
- case XFS_LI_ICREATE: {
- skip = xlog_print_trans_icreate(&ptr,
- be32_to_cpu(op_head->oh_len),
- &i, num_ops);
- break;
- }
- case XFS_LI_INODE: {
- skip = xlog_print_trans_inode(log, &ptr,
- be32_to_cpu(op_head->oh_len),
- &i, num_ops, continued);
- break;
- }
- case XFS_LI_DQUOT: {
- skip = xlog_print_trans_dquot(&ptr,
- be32_to_cpu(op_head->oh_len),
- &i, num_ops);
- break;
- }
- case XFS_LI_EFI_RT:
- case XFS_LI_EFI: {
- skip = xlog_print_trans_efi(&ptr,
- be32_to_cpu(op_head->oh_len),
- continued);
- break;
- }
- case XFS_LI_EFD_RT:
- case XFS_LI_EFD: {
- skip = xlog_print_trans_efd(&ptr,
- be32_to_cpu(op_head->oh_len));
- break;
- }
- case XFS_LI_ATTRI: {
- skip = xlog_print_trans_attri(&ptr,
- be32_to_cpu(op_head->oh_len),
- &i);
- break;
- }
- case XFS_LI_ATTRD: {
- skip = xlog_print_trans_attrd(&ptr,
- be32_to_cpu(op_head->oh_len));
- break;
- }
- case XFS_LI_RUI_RT:
- case XFS_LI_RUI: {
- skip = xlog_print_trans_rui(&ptr,
- be32_to_cpu(op_head->oh_len),
- continued);
- break;
- }
- case XFS_LI_RUD_RT:
- case XFS_LI_RUD: {
- skip = xlog_print_trans_rud(&ptr,
- be32_to_cpu(op_head->oh_len));
- break;
- }
- case XFS_LI_CUI_RT:
- case XFS_LI_CUI: {
- skip = xlog_print_trans_cui(&ptr,
- be32_to_cpu(op_head->oh_len),
- continued);
- break;
- }
- case XFS_LI_CUD_RT:
- case XFS_LI_CUD: {
- skip = xlog_print_trans_cud(&ptr,
- be32_to_cpu(op_head->oh_len));
- break;
- }
- case XFS_LI_BUI: {
- skip = xlog_print_trans_bui(&ptr,
- be32_to_cpu(op_head->oh_len),
- continued);
- break;
- }
- case XFS_LI_BUD: {
- skip = xlog_print_trans_bud(&ptr,
- be32_to_cpu(op_head->oh_len));
- break;
- }
- case XFS_LI_XMI: {
- skip = xlog_print_trans_xmi(&ptr,
- be32_to_cpu(op_head->oh_len),
- continued);
- break;
- }
- case XFS_LI_XMD: {
- skip = xlog_print_trans_xmd(&ptr,
- be32_to_cpu(op_head->oh_len));
- break;
- }
- case XFS_LI_QUOTAOFF: {
- skip = xlog_print_trans_qoff(&ptr,
- be32_to_cpu(op_head->oh_len));
- break;
- }
- case XLOG_UNMOUNT_TYPE: {
- printf(_("Unmount filesystem\n"));
- skip = 0;
- break;
- }
- default: {
+ skip = xlog_print_region(log, &ptr, op_head, &i, num_ops,
+ continued);
+ if (skip == -1) {
if (bad_hdr_warn && !lost_context) {
fprintf(stderr,
_("%s: unknown log operation type (%x)\n"),
@@ -1173,11 +1127,10 @@ xlog_print_record(
skip = 0;
ptr += be32_to_cpu(op_head->oh_len);
lost_context = 0;
- }
- } /* switch */
- } /* else */
- if (skip != 0)
- xlog_print_add_to_trans(be32_to_cpu(op_head->oh_tid), skip);
+ }
+
+ if (skip)
+ xlog_print_add_to_trans(be32_to_cpu(op_head->oh_tid), skip);
}
}
printf("\n");
--
2.47.3
next prev parent reply other threads:[~2025-11-28 6:32 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-28 6:29 logprint cleanups, part1 Christoph Hellwig
2025-11-28 6:29 ` [PATCH 01/25] include: remove struct xfs_qoff_logitem Christoph Hellwig
2025-11-28 6:29 ` [PATCH 02/25] logprint: remove xlog_print_dir2_sf Christoph Hellwig
2025-11-28 6:29 ` [PATCH 03/25] logprint: re-indent printing helpers Christoph Hellwig
2025-11-28 6:29 ` [PATCH 04/25] logprint: cleanup xlog_print_op_header Christoph Hellwig
2025-11-28 6:29 ` [PATCH 05/25] logprint: cleanup struct xlog_split_item handling Christoph Hellwig
2025-11-28 6:29 ` [PATCH 06/25] logprint: cleanup xlog_print_trans_header Christoph Hellwig
2025-11-28 6:29 ` [PATCH 07/25] logprint: split per-type helpers out of xlog_print_trans_buffer Christoph Hellwig
2025-11-28 6:29 ` [PATCH 08/25] logprint: cleanup xlog_print_trans_buffer Christoph Hellwig
2025-11-28 6:29 ` [PATCH 09/25] logprint: cleanup xlog_print_trans_qoff Christoph Hellwig
2025-11-28 6:29 ` [PATCH 10/25] logprint: cleanup xlog_print_trans_inode_core Christoph Hellwig
2025-12-01 18:23 ` Andrey Albershteyn
2025-12-02 7:27 ` Christoph Hellwig
2025-11-28 6:29 ` [PATCH 11/25] logprint: move xfs_inode_item_format_convert up Christoph Hellwig
2025-12-01 18:32 ` Andrey Albershteyn
2025-12-02 7:28 ` Christoph Hellwig
2025-11-28 6:29 ` [PATCH 12/25] logprint: cleanup xlog_print_trans_inode Christoph Hellwig
2025-11-28 6:29 ` [PATCH 13/25] logprint: cleanup xlog_print_trans_dquot Christoph Hellwig
2025-11-28 6:29 ` [PATCH 14/25] logprint: re-indent print_lseek / print_lsn Christoph Hellwig
2025-11-28 6:29 ` Christoph Hellwig [this message]
2025-11-28 6:29 ` [PATCH 16/25] logprint: factor out a xlog_print_op helper Christoph Hellwig
2025-12-01 18:44 ` Andrey Albershteyn
2025-12-02 7:29 ` Christoph Hellwig
2025-11-28 6:29 ` [PATCH 17/25] logprint: factor out a xlog_unpack_rec_header Christoph Hellwig
2025-11-28 6:29 ` [PATCH 18/25] logprint: cleanup xlog_print_record Christoph Hellwig
2025-11-28 6:29 ` [PATCH 19/25] logprint: cleanup xlog_print_rec_head Christoph Hellwig
2025-11-28 6:29 ` [PATCH 20/25] logprint: cleanup xlog_print_rec_xhead Christoph Hellwig
2025-11-28 6:29 ` [PATCH 21/25] logprint: re-indent print_xlog_bad_* Christoph Hellwig
2025-11-28 6:29 ` [PATCH 22/25] logprint: cleanup xlog_reallocate_xhdrs Christoph Hellwig
2025-11-28 6:30 ` [PATCH 23/25] logprint: factor out a xlog_print_ext_header helper Christoph Hellwig
2025-11-28 6:30 ` [PATCH 24/25] logprint: cleanup xlog_print_extended_headers Christoph Hellwig
2025-11-28 6:30 ` [PATCH 25/25] logprint: cleanup xfs_log_print Christoph Hellwig
2025-12-01 19:03 ` logprint cleanups, part1 Andrey Albershteyn
2025-12-02 7:29 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251128063007.1495036-16-hch@lst.de \
--to=hch@lst.de \
--cc=aalbersh@kernel.org \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox