Skip to content

Commit

Permalink
xfs: move xlog_commit_record to xfs_log_cil.c
Browse files Browse the repository at this point in the history
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 8634f30
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 44 deletions.
41 changes: 0 additions & 41 deletions fs/xfs/xfs_log.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
45 changes: 44 additions & 1 deletion fs/xfs/xfs_log_cil.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand Down
2 changes: 0 additions & 2 deletions fs/xfs/xfs_log_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 8634f30

Please sign in to comment.