linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Carlos Maiolino <cem@kernel.org>
Cc: linux-xfs@vger.kernel.org
Subject: [PATCH 06/18] xfs: add a xlog_write_one_vec helper
Date: Tue, 15 Jul 2025 14:30:11 +0200	[thread overview]
Message-ID: <20250715123125.1945534-7-hch@lst.de> (raw)
In-Reply-To: <20250715123125.1945534-1-hch@lst.de>

Add a wrapper for xlog_write for the two callers who need to build a
log_vec and add it to a single-entry chain instead of duplicating the
code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/xfs/xfs_log.c      | 35 +++++++++++++++++++++--------------
 fs/xfs/xfs_log_cil.c  | 11 +----------
 fs/xfs/xfs_log_priv.h |  2 ++
 3 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index 3179923a68d4..96807140df73 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -848,6 +848,26 @@ xlog_wait_on_iclog(
 	return 0;
 }
 
+int
+xlog_write_one_vec(
+	struct xlog		*log,
+	struct xfs_cil_ctx	*ctx,
+	struct xfs_log_iovec	*reg,
+	struct xlog_ticket	*ticket)
+{
+	struct xfs_log_vec	lv = {
+		.lv_niovecs	= 1,
+		.lv_iovecp	= reg,
+	};
+	LIST_HEAD		(lv_chain);
+
+	/* account for space used by record data */
+	ticket->t_curr_res -= reg->i_len;
+
+	list_add(&lv.lv_list, &lv_chain);
+	return xlog_write(log, ctx, &lv_chain, ticket, reg->i_len);
+}
+
 /*
  * Write out an unmount record using the ticket provided. We have to account for
  * the data space used in the unmount ticket as this write is not done from a
@@ -876,21 +896,8 @@ xlog_write_unmount_record(
 		.i_len = sizeof(unmount_rec),
 		.i_type = XLOG_REG_TYPE_UNMOUNT,
 	};
-	struct xfs_log_vec vec = {
-		.lv_niovecs = 1,
-		.lv_iovecp = &reg,
-	};
-	LIST_HEAD(lv_chain);
-	list_add(&vec.lv_list, &lv_chain);
-
-	BUILD_BUG_ON((sizeof(struct xlog_op_header) +
-		      sizeof(struct xfs_unmount_log_format)) !=
-							sizeof(unmount_rec));
-
-	/* account for space used by record data */
-	ticket->t_curr_res -= sizeof(unmount_rec);
 
-	return xlog_write(log, NULL, &lv_chain, ticket, reg.i_len);
+	return xlog_write_one_vec(log, NULL, &reg, ticket);
 }
 
 /*
diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c
index f443757e93c2..1ac2cd9a5a36 100644
--- a/fs/xfs/xfs_log_cil.c
+++ b/fs/xfs/xfs_log_cil.c
@@ -1098,13 +1098,7 @@ xlog_cil_write_commit_record(
 		.i_len = sizeof(struct xlog_op_header),
 		.i_type = XLOG_REG_TYPE_COMMIT,
 	};
-	struct xfs_log_vec	vec = {
-		.lv_niovecs = 1,
-		.lv_iovecp = &reg,
-	};
 	int			error;
-	LIST_HEAD(lv_chain);
-	list_add(&vec.lv_list, &lv_chain);
 
 	if (xlog_is_shutdown(log))
 		return -EIO;
@@ -1112,10 +1106,7 @@ xlog_cil_write_commit_record(
 	error = xlog_cil_order_write(ctx->cil, ctx->sequence, _COMMIT_RECORD);
 	if (error)
 		return error;
-
-	/* account for space used by record data */
-	ctx->ticket->t_curr_res -= reg.i_len;
-	error = xlog_write(log, ctx, &lv_chain, ctx->ticket, reg.i_len);
+	error = xlog_write_one_vec(log, ctx, &reg, ctx->ticket);
 	if (error)
 		xlog_force_shutdown(log, SHUTDOWN_LOG_IO_ERROR);
 	return error;
diff --git a/fs/xfs/xfs_log_priv.h b/fs/xfs/xfs_log_priv.h
index 39a102cc1b43..463daf51da15 100644
--- a/fs/xfs/xfs_log_priv.h
+++ b/fs/xfs/xfs_log_priv.h
@@ -511,6 +511,8 @@ void	xlog_print_trans(struct xfs_trans *);
 int	xlog_write(struct xlog *log, struct xfs_cil_ctx *ctx,
 		struct list_head *lv_chain, struct xlog_ticket *tic,
 		uint32_t len);
+int	xlog_write_one_vec(struct xlog *log, struct xfs_cil_ctx *ctx,
+		struct xfs_log_iovec *reg, struct xlog_ticket *ticket);
 void	xfs_log_ticket_ungrant(struct xlog *log, struct xlog_ticket *ticket);
 void	xfs_log_ticket_regrant(struct xlog *log, struct xlog_ticket *ticket);
 
-- 
2.47.2


  parent reply	other threads:[~2025-07-15 12:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-15 12:30 misc log cleanups allocation Christoph Hellwig
2025-07-15 12:30 ` [PATCH 01/18] xfs: don't pass the old lv to xfs_cil_prepare_item Christoph Hellwig
2025-07-15 12:30 ` [PATCH 02/18] xfs: cleanup the ordered item logic in xlog_cil_insert_format_items Christoph Hellwig
2025-07-15 12:30 ` [PATCH 03/18] xfs: use better names for size members in xfs_log_vec Christoph Hellwig
2025-07-15 12:30 ` [PATCH 04/18] xfs: don't use a xfs_log_iovec for attr_item names and values Christoph Hellwig
2025-07-15 12:30 ` [PATCH 05/18] xfs: don't use a xfs_log_iovec for ri_buf in log recovery Christoph Hellwig
2025-07-15 12:30 ` Christoph Hellwig [this message]
2025-07-15 12:30 ` [PATCH 07/18] xfs: set lv_bytes in xlog_write_one_vec Christoph Hellwig
2025-07-15 12:30 ` [PATCH 08/18] xfs: improve the ->iop_format interface Christoph Hellwig
2025-07-15 12:30 ` [PATCH 09/18] xfs: move struct xfs_log_iovec to xfs_log_priv.h Christoph Hellwig
2025-07-15 12:30 ` [PATCH 10/18] xfs: move struct xfs_log_vec " Christoph Hellwig
2025-07-15 12:30 ` [PATCH 11/18] xfs: remove the xlog_op_header_t typedef Christoph Hellwig
2025-07-15 12:30 ` [PATCH 12/18] xfs: remove the xfs_trans_header_t typedef Christoph Hellwig
2025-07-15 12:30 ` [PATCH 13/18] xfs: move the XLOG_REG_ constants out of xfs_log_format.h Christoph Hellwig
2025-07-15 12:30 ` [PATCH 14/18] xfs: regularize iclog space accounting in xlog_write_partial Christoph Hellwig
2025-07-15 12:30 ` [PATCH 15/18] xfs: improve the calling convention for the xlog_write helpers Christoph Hellwig
2025-07-15 12:30 ` [PATCH 16/18] xfs: add a xlog_write_space_left helper Christoph Hellwig
2025-07-15 12:30 ` [PATCH 17/18] xfs: improve the iclog space assert in xlog_write_iovec Christoph Hellwig
2025-07-15 12:30 ` [PATCH 18/18] xfs: factor out a xlog_write_space_advance helper 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=20250715123125.1945534-7-hch@lst.de \
    --to=hch@lst.de \
    --cc=cem@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;
as well as URLs for NNTP newsgroup(s).