public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
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


  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