Skip to content
Permalink
Browse files
xfs: move xlog_commit_record to xfs_log_cil.c
It is only used by the CIL checkpoints, and is the counterpart to
start record formatting and writing that is already local to
xfs_log_cil.c.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
  • Loading branch information
Dave Chinner authored and intel-lab-lkp committed Jun 17, 2021
1 parent 815753d commit 8634f301cb32bdc5ebbfcf0671509ca5fa857edd
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 44 deletions.
@@ -1563,47 +1563,6 @@ xlog_alloc_log(
return ERR_PTR(error);
} /* xlog_alloc_log */

/*
* Write out the commit record of a transaction associated with the given
* ticket to close off a running log write. Return the lsn of the commit record.
*/
int
xlog_commit_record(
struct xlog *log,
struct xlog_ticket *ticket,
struct xlog_in_core **iclog,
xfs_lsn_t *lsn)
{
struct xlog_op_header ophdr = {
.oh_clientid = XFS_TRANSACTION,
.oh_tid = cpu_to_be32(ticket->t_tid),
.oh_flags = XLOG_COMMIT_TRANS,
};
struct xfs_log_iovec reg = {
.i_addr = &ophdr,
.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);
INIT_LIST_HEAD(&vec.lv_list);
list_add(&vec.lv_list, &lv_chain);

if (XLOG_FORCED_SHUTDOWN(log))
return -EIO;

/* account for space used by record data */
ticket->t_curr_res -= reg.i_len;
error = xlog_write(log, &lv_chain, ticket, lsn, iclog, reg.i_len);
if (error)
xfs_force_shutdown(log->l_mp, SHUTDOWN_LOG_IO_ERROR);
return error;
}

/*
* Compute the LSN that we'd need to push the log tail towards in order to have
* (a) enough on-disk log space to log the number of bytes specified, (b) at
@@ -783,6 +783,48 @@ xlog_cil_build_trans_hdr(
tic->t_curr_res -= lvhdr->lv_bytes;
}

/*
* Write out the commit record of a checkpoint transaction associated with the
* given ticket to close off a running log write. Return the lsn of the commit
* record.
*/
int
xlog_cil_write_commit_record(
struct xlog *log,
struct xlog_ticket *ticket,
struct xlog_in_core **iclog,
xfs_lsn_t *lsn)
{
struct xlog_op_header ophdr = {
.oh_clientid = XFS_TRANSACTION,
.oh_tid = cpu_to_be32(ticket->t_tid),
.oh_flags = XLOG_COMMIT_TRANS,
};
struct xfs_log_iovec reg = {
.i_addr = &ophdr,
.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);
INIT_LIST_HEAD(&vec.lv_list);
list_add(&vec.lv_list, &lv_chain);

if (XLOG_FORCED_SHUTDOWN(log))
return -EIO;

/* account for space used by record data */
ticket->t_curr_res -= reg.i_len;
error = xlog_write(log, &lv_chain, ticket, lsn, iclog, reg.i_len);
if (error)
xfs_force_shutdown(log->l_mp, SHUTDOWN_LOG_IO_ERROR);
return error;
}

/*
* CIL item reordering compare function. We want to order in ascending ID order,
* but we want to leave items with the same ID in the order they were added to
@@ -1041,7 +1083,8 @@ xlog_cil_push_work(
}
spin_unlock(&cil->xc_push_lock);

error = xlog_commit_record(log, ctx->ticket, &commit_iclog, &commit_lsn);
error = xlog_cil_write_commit_record(log, ctx->ticket, &commit_iclog,
&commit_lsn);
if (error)
goto out_abort_free_ticket;

@@ -490,8 +490,6 @@ void xlog_print_trans(struct xfs_trans *);
int xlog_write(struct xlog *log, struct list_head *lv_chain,
struct xlog_ticket *tic, xfs_lsn_t *start_lsn,
struct xlog_in_core **commit_iclog, uint32_t len);
int xlog_commit_record(struct xlog *log, struct xlog_ticket *ticket,
struct xlog_in_core **iclog, xfs_lsn_t *lsn);

void xfs_log_ticket_ungrant(struct xlog *log, struct xlog_ticket *ticket);
void xfs_log_ticket_regrant(struct xlog *log, struct xlog_ticket *ticket);

0 comments on commit 8634f30

Please sign in to comment.