Commit fd2ffccf authored by Stephen Lord's avatar Stephen Lord Committed by Nathan Scott

[XFS] remove some unused code paths from the log flushing paths, and

remove the callback processing from the log write path, we only
do callbacks on I/O completion now.

SGI Modid: 2.5.x-xfs:slinx:133285a
parent b35ed010
...@@ -51,7 +51,7 @@ STATIC xlog_t * xlog_alloc_log(xfs_mount_t *mp, ...@@ -51,7 +51,7 @@ STATIC xlog_t * xlog_alloc_log(xfs_mount_t *mp,
xfs_daddr_t blk_offset, xfs_daddr_t blk_offset,
int num_bblks); int num_bblks);
STATIC int xlog_space_left(xlog_t *log, int cycle, int bytes); STATIC int xlog_space_left(xlog_t *log, int cycle, int bytes);
STATIC int xlog_sync(xlog_t *log, xlog_in_core_t *iclog, uint flags); STATIC int xlog_sync(xlog_t *log, xlog_in_core_t *iclog);
STATIC void xlog_unalloc_log(xlog_t *log); STATIC void xlog_unalloc_log(xlog_t *log);
STATIC int xlog_write(xfs_mount_t *mp, xfs_log_iovec_t region[], STATIC int xlog_write(xfs_mount_t *mp, xfs_log_iovec_t region[],
int nentries, xfs_log_ticket_t tic, int nentries, xfs_log_ticket_t tic,
...@@ -1368,8 +1368,7 @@ xlog_grant_push_ail(xfs_mount_t *mp, ...@@ -1368,8 +1368,7 @@ xlog_grant_push_ail(xfs_mount_t *mp,
int int
xlog_sync(xlog_t *log, xlog_sync(xlog_t *log,
xlog_in_core_t *iclog, xlog_in_core_t *iclog)
uint flags)
{ {
xfs_caddr_t dptr; /* pointer to byte sized element */ xfs_caddr_t dptr; /* pointer to byte sized element */
xfs_buf_t *bp; xfs_buf_t *bp;
...@@ -1382,11 +1381,6 @@ xlog_sync(xlog_t *log, ...@@ -1382,11 +1381,6 @@ xlog_sync(xlog_t *log,
XFS_STATS_INC(xfsstats.xs_log_writes); XFS_STATS_INC(xfsstats.xs_log_writes);
ASSERT(iclog->ic_refcnt == 0); ASSERT(iclog->ic_refcnt == 0);
#ifdef DEBUG
if (flags != 0 && (flags & XFS_LOG_SYNC) )
xlog_panic("xlog_sync: illegal flag");
#endif
/* Round out the log write size */ /* Round out the log write size */
if (iclog->ic_offset & BBMASK) { if (iclog->ic_offset & BBMASK) {
/* count of 0 is already accounted for up in /* count of 0 is already accounted for up in
...@@ -1440,13 +1434,8 @@ xlog_sync(xlog_t *log, ...@@ -1440,13 +1434,8 @@ xlog_sync(xlog_t *log,
} }
XFS_BUF_SET_PTR(bp, (xfs_caddr_t) &(iclog->ic_header), count); XFS_BUF_SET_PTR(bp, (xfs_caddr_t) &(iclog->ic_header), count);
XFS_BUF_SET_FSPRIVATE(bp, iclog); /* save for later */ XFS_BUF_SET_FSPRIVATE(bp, iclog); /* save for later */
if (flags & XFS_LOG_SYNC){
XFS_BUF_BUSY(bp);
XFS_BUF_HOLD(bp);
} else {
XFS_BUF_BUSY(bp); XFS_BUF_BUSY(bp);
XFS_BUF_ASYNC(bp); XFS_BUF_ASYNC(bp);
}
/* /*
* Do a disk write cache flush for the log block. * Do a disk write cache flush for the log block.
* This is a bit of a sledgehammer, it would be better * This is a bit of a sledgehammer, it would be better
...@@ -1832,15 +1821,19 @@ xlog_state_clean_log(xlog_t *log) ...@@ -1832,15 +1821,19 @@ xlog_state_clean_log(xlog_t *log)
* If the number of ops in this iclog indicate it just * If the number of ops in this iclog indicate it just
* contains the dummy transaction, we can * contains the dummy transaction, we can
* change state into IDLE (the second time around). * change state into IDLE (the second time around).
* Otherwise we should change the state into NEED a dummy. * Otherwise we should change the state into
* NEED a dummy.
* We don't need to cover the dummy. * We don't need to cover the dummy.
*/ */
if (!changed && if (!changed &&
(INT_GET(iclog->ic_header.h_num_logops, ARCH_CONVERT) == XLOG_COVER_OPS)) { (INT_GET(iclog->ic_header.h_num_logops, ARCH_CONVERT) == XLOG_COVER_OPS)) {
changed = 1; changed = 1;
} else { /* we have two dirty iclogs so start over */ } else {
/* This could also be num of ops indicates /*
this is not the dummy going out. */ * We have two dirty iclogs so start over
* This could also be num of ops indicates
* this is not the dummy going out.
*/
changed = 2; changed = 2;
} }
INT_ZERO(iclog->ic_header.h_num_logops, ARCH_CONVERT); INT_ZERO(iclog->ic_header.h_num_logops, ARCH_CONVERT);
...@@ -2226,8 +2219,6 @@ xlog_state_get_iclog_space(xlog_t *log, ...@@ -2226,8 +2219,6 @@ xlog_state_get_iclog_space(xlog_t *log,
xlog_in_core_t *iclog; xlog_in_core_t *iclog;
int error; int error;
xlog_state_do_callback(log, 0, NULL); /* also cleans log */
restart: restart:
s = LOG_LOCK(log); s = LOG_LOCK(log);
if (XLOG_FORCED_SHUTDOWN(log)) { if (XLOG_FORCED_SHUTDOWN(log)) {
...@@ -2721,7 +2712,7 @@ void xlog_sync_work( ...@@ -2721,7 +2712,7 @@ void xlog_sync_work(
xlog_in_core_t *iclog = (xlog_in_core_t *)v; xlog_in_core_t *iclog = (xlog_in_core_t *)v;
xlog_t *log = iclog->ic_log; xlog_t *log = iclog->ic_log;
xlog_sync(log, iclog, 0); xlog_sync(log, iclog);
} }
int xlog_mode = 1; int xlog_mode = 1;
...@@ -2777,7 +2768,7 @@ xlog_state_release_iclog(xlog_t *log, ...@@ -2777,7 +2768,7 @@ xlog_state_release_iclog(xlog_t *log,
INIT_WORK(&iclog->ic_write_work, xlog_sync_work, iclog); INIT_WORK(&iclog->ic_write_work, xlog_sync_work, iclog);
switch (xlog_mode) { switch (xlog_mode) {
case 0: case 0:
return xlog_sync(log, iclog, 0); return xlog_sync(log, iclog);
case 1: case 1:
queue_work(pagebuf_workqueue, &iclog->ic_write_work); queue_work(pagebuf_workqueue, &iclog->ic_write_work);
} }
......
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