mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
xfs: add a xlog_write_one_vec helper
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> Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
24d479d26b
commit
2d4521e4c0
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user