Commit 69363999 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong

xfs: remove xlog_state_want_sync

Open code the xlog_state_want_sync logic in its two callers given that
this function is a trivial wrapper around xlog_state_switch_iclogs.

Move the lockdep assert into xlog_state_switch_iclogs to not lose this
debugging aid, and improve the comment that documents
xlog_state_switch_iclogs as well.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 5781464b
...@@ -62,11 +62,6 @@ xlog_state_switch_iclogs( ...@@ -62,11 +62,6 @@ xlog_state_switch_iclogs(
struct xlog_in_core *iclog, struct xlog_in_core *iclog,
int eventual_size); int eventual_size);
STATIC void STATIC void
xlog_state_want_sync(
struct xlog *log,
struct xlog_in_core *iclog);
STATIC void
xlog_grant_push_ail( xlog_grant_push_ail(
struct xlog *log, struct xlog *log,
int need_bytes); int need_bytes);
...@@ -938,7 +933,11 @@ xfs_log_write_unmount_record( ...@@ -938,7 +933,11 @@ xfs_log_write_unmount_record(
spin_lock(&log->l_icloglock); spin_lock(&log->l_icloglock);
iclog = log->l_iclog; iclog = log->l_iclog;
atomic_inc(&iclog->ic_refcnt); atomic_inc(&iclog->ic_refcnt);
xlog_state_want_sync(log, iclog); if (iclog->ic_state == XLOG_STATE_ACTIVE)
xlog_state_switch_iclogs(log, iclog, 0);
else
ASSERT(iclog->ic_state == XLOG_STATE_WANT_SYNC ||
iclog->ic_state == XLOG_STATE_IOERROR);
error = xlog_state_release_iclog(log, iclog); error = xlog_state_release_iclog(log, iclog);
xlog_wait_on_iclog(iclog); xlog_wait_on_iclog(iclog);
...@@ -2293,7 +2292,11 @@ xlog_write_copy_finish( ...@@ -2293,7 +2292,11 @@ xlog_write_copy_finish(
*record_cnt = 0; *record_cnt = 0;
*data_cnt = 0; *data_cnt = 0;
xlog_state_want_sync(log, iclog); if (iclog->ic_state == XLOG_STATE_ACTIVE)
xlog_state_switch_iclogs(log, iclog, 0);
else
ASSERT(iclog->ic_state == XLOG_STATE_WANT_SYNC ||
iclog->ic_state == XLOG_STATE_IOERROR);
if (!commit_iclog) if (!commit_iclog)
goto release_iclog; goto release_iclog;
spin_unlock(&log->l_icloglock); spin_unlock(&log->l_icloglock);
...@@ -3108,11 +3111,12 @@ xlog_ungrant_log_space( ...@@ -3108,11 +3111,12 @@ xlog_ungrant_log_space(
} }
/* /*
* This routine will mark the current iclog in the ring as WANT_SYNC * Mark the current iclog in the ring as WANT_SYNC and move the current iclog
* and move the current iclog pointer to the next iclog in the ring. * pointer to the next iclog in the ring.
* When this routine is called from xlog_state_get_iclog_space(), the *
* exact size of the iclog has not yet been determined. All we know is * When called from xlog_state_get_iclog_space(), the exact size of the iclog
* that every data block. We have run out of space in this log record. * has not yet been determined, all we know is that we have run out of space in
* the current iclog.
*/ */
STATIC void STATIC void
xlog_state_switch_iclogs( xlog_state_switch_iclogs(
...@@ -3121,6 +3125,8 @@ xlog_state_switch_iclogs( ...@@ -3121,6 +3125,8 @@ xlog_state_switch_iclogs(
int eventual_size) int eventual_size)
{ {
ASSERT(iclog->ic_state == XLOG_STATE_ACTIVE); ASSERT(iclog->ic_state == XLOG_STATE_ACTIVE);
assert_spin_locked(&log->l_icloglock);
if (!eventual_size) if (!eventual_size)
eventual_size = iclog->ic_offset; eventual_size = iclog->ic_offset;
iclog->ic_state = XLOG_STATE_WANT_SYNC; iclog->ic_state = XLOG_STATE_WANT_SYNC;
...@@ -3362,26 +3368,6 @@ xfs_log_force_lsn( ...@@ -3362,26 +3368,6 @@ xfs_log_force_lsn(
return ret; return ret;
} }
/*
* Called when we want to mark the current iclog as being ready to sync to
* disk.
*/
STATIC void
xlog_state_want_sync(
struct xlog *log,
struct xlog_in_core *iclog)
{
assert_spin_locked(&log->l_icloglock);
if (iclog->ic_state == XLOG_STATE_ACTIVE) {
xlog_state_switch_iclogs(log, iclog, 0);
} else {
ASSERT(iclog->ic_state == XLOG_STATE_WANT_SYNC ||
iclog->ic_state == XLOG_STATE_IOERROR);
}
}
/***************************************************************************** /*****************************************************************************
* *
* TICKET functions * TICKET functions
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment