int
sb_logcheck(void)
{
+ struct xlog log;
int dirty;
if (mp->m_sb.sb_logstart) {
libxfs_buftarg_init(mp, x.ddev, x.logdev, x.rtdev);
- dirty = xlog_is_dirty(mp, &x, 0);
+ dirty = xlog_is_dirty(mp, &log, &x, 0);
if (dirty == -1) {
dbprintf(_("ERROR: cannot find log head/tail, run xfs_repair\n"));
return 0;
extern libxfs_init_t x;
-extern int xlog_is_dirty(xfs_mount_t *mp, libxfs_init_t *x, int verbose);
+extern int xlog_is_dirty(struct xfs_mount *, struct xlog *, libxfs_init_t *,
+ int);
extern struct xfs_buf *xlog_get_bp(struct xlog *, int);
extern void xlog_put_bp(struct xfs_buf *);
extern int xlog_bread(struct xlog *log, xfs_daddr_t blk_no, int nbblks,
*/
int
xlog_is_dirty(
- xfs_mount_t *mp,
- libxfs_init_t *x,
- int verbose)
+ struct xfs_mount *mp,
+ struct xlog *log,
+ libxfs_init_t *x,
+ int verbose)
{
- int error;
- struct xlog log;
- xfs_daddr_t head_blk, tail_blk;
+ int error;
+ xfs_daddr_t head_blk, tail_blk;
- memset(&log, 0, sizeof(log));
+ memset(log, 0, sizeof(*log));
/* We (re-)init members of libxfs_init_t here? really? */
x->logBBsize = XFS_FSB_TO_BB(mp, mp->m_sb.sb_logblocks);
if (xfs_sb_version_hassector(&mp->m_sb))
x->lbsize <<= (mp->m_sb.sb_logsectlog - BBSHIFT);
- log.l_dev = mp->m_logdev_targp;
- log.l_logBBsize = x->logBBsize;
- log.l_logBBstart = x->logBBstart;
- log.l_sectBBsize = BTOBB(x->lbsize);
- log.l_mp = mp;
+ log->l_dev = mp->m_logdev_targp;
+ log->l_logBBsize = x->logBBsize;
+ log->l_logBBstart = x->logBBstart;
+ log->l_sectBBsize = BTOBB(x->lbsize);
+ log->l_mp = mp;
if (xfs_sb_version_hassector(&mp->m_sb)) {
- log.l_sectbb_log = mp->m_sb.sb_logsectlog - BBSHIFT;
- ASSERT(log.l_sectbb_log <= mp->m_sectbb_log);
+ log->l_sectbb_log = mp->m_sb.sb_logsectlog - BBSHIFT;
+ ASSERT(log->l_sectbb_log <= mp->m_sectbb_log);
/* for larger sector sizes, must have v2 or external log */
- ASSERT(log.l_sectbb_log == 0 ||
- log.l_logBBstart == 0 ||
+ ASSERT(log->l_sectbb_log == 0 ||
+ log->l_logBBstart == 0 ||
xfs_sb_version_haslogv2(&mp->m_sb));
ASSERT(mp->m_sb.sb_logsectlog >= BBSHIFT);
}
- log.l_sectbb_mask = (1 << log.l_sectbb_log) - 1;
+ log->l_sectbb_mask = (1 << log->l_sectbb_log) - 1;
- if ((error = xlog_find_tail(&log, &head_blk, &tail_blk))) {
+ error = xlog_find_tail(log, &head_blk, &tail_blk);
+ if (error) {
xlog_warn(_("%s: cannot find log head/tail "
"(xlog_find_tail=%d)\n"),
__func__, error);