From: Christoph Hellwig <hch@lst.de>
To: Carlos Maiolino <cem@kernel.org>
Cc: linux-xfs@vger.kernel.org, "Darrick J. Wong" <djwong@kernel.org>
Subject: [PATCH 01/10] xfs: add a xlog_write_one_vec helper
Date: Wed, 12 Nov 2025 13:14:17 +0100 [thread overview]
Message-ID: <20251112121458.915383-2-hch@lst.de> (raw)
In-Reply-To: <20251112121458.915383-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>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
---
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 a311385b23d8..ed83a0e3578e 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 = ®,
- };
- 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, ®, ticket);
}
/*
diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c
index 778ac47adb8c..83aa06e19cfb 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 = ®,
- };
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, ®, 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 0fe59f0525aa..d2410e78b7f5 100644
--- a/fs/xfs/xfs_log_priv.h
+++ b/fs/xfs/xfs_log_priv.h
@@ -507,6 +507,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.3
next prev parent reply other threads:[~2025-11-12 12:15 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-12 12:14 cleanup log item formatting v3 Christoph Hellwig
2025-11-12 12:14 ` Christoph Hellwig [this message]
2025-11-12 12:14 ` [PATCH 02/10] xfs: set lv_bytes in xlog_write_one_vec Christoph Hellwig
2025-11-14 16:55 ` Darrick J. Wong
2025-11-12 12:14 ` [PATCH 03/10] xfs: improve the ->iop_format interface Christoph Hellwig
2025-11-12 12:14 ` [PATCH 04/10] xfs: move struct xfs_log_iovec to xfs_log_priv.h Christoph Hellwig
2025-11-12 12:14 ` [PATCH 05/10] xfs: move struct xfs_log_vec " Christoph Hellwig
2025-11-12 12:14 ` [PATCH 06/10] xfs: regularize iclog space accounting in xlog_write_partial Christoph Hellwig
2025-11-14 16:55 ` Darrick J. Wong
2025-11-12 12:14 ` [PATCH 07/10] xfs: improve the calling convention for the xlog_write helpers Christoph Hellwig
2025-11-14 16:56 ` Darrick J. Wong
2025-11-12 12:14 ` [PATCH 08/10] xfs: add a xlog_write_space_left helper Christoph Hellwig
2025-11-12 12:14 ` [PATCH 09/10] xfs: improve the iclog space assert in xlog_write_iovec Christoph Hellwig
2025-11-12 12:14 ` [PATCH 10/10] xfs: factor out a xlog_write_space_advance helper Christoph Hellwig
2025-11-24 15:05 ` cleanup log item formatting v3 Carlos Maiolino
-- strict thread matches above, loose matches on Subject: below --
2025-10-30 14:49 cleanup log item formatting v2 Christoph Hellwig
2025-10-30 14:49 ` [PATCH 01/10] xfs: add a xlog_write_one_vec helper Christoph Hellwig
2025-10-31 23:59 ` Darrick J. Wong
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=20251112121458.915383-2-hch@lst.de \
--to=hch@lst.de \
--cc=cem@kernel.org \
--cc=djwong@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.