17336d0e6SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2b3b94faaSDavid Teigland /*
3b3b94faaSDavid Teigland * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
43a8a9a10SSteven Whitehouse * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
5b3b94faaSDavid Teigland */
6b3b94faaSDavid Teigland
7b3b94faaSDavid Teigland #ifndef __RECOVERY_DOT_H__
8b3b94faaSDavid Teigland #define __RECOVERY_DOT_H__
9b3b94faaSDavid Teigland
10f2f7ba52SSteven Whitehouse #include "incore.h"
11f2f7ba52SSteven Whitehouse
125c0dc371SAndreas Gruenbacher extern struct workqueue_struct *gfs2_recovery_wq;
136ecd7c2dSTejun Heo
gfs2_replay_incr_blk(struct gfs2_jdesc * jd,u32 * blk)147c70b896SBob Peterson static inline void gfs2_replay_incr_blk(struct gfs2_jdesc *jd, u32 *blk)
15b3b94faaSDavid Teigland {
16e1cb6be9SBob Peterson if (++*blk == jd->jd_blocks)
17b3b94faaSDavid Teigland *blk = 0;
18b3b94faaSDavid Teigland }
19b3b94faaSDavid Teigland
20*0b2355feSAndreas Gruenbacher int gfs2_replay_read_block(struct gfs2_jdesc *jd, unsigned int blk,
21b3b94faaSDavid Teigland struct buffer_head **bh);
22b3b94faaSDavid Teigland
23*0b2355feSAndreas Gruenbacher int gfs2_revoke_add(struct gfs2_jdesc *jd, u64 blkno, unsigned int where);
24*0b2355feSAndreas Gruenbacher int gfs2_revoke_check(struct gfs2_jdesc *jd, u64 blkno, unsigned int where);
25*0b2355feSAndreas Gruenbacher void gfs2_revoke_clean(struct gfs2_jdesc *jd);
26b3b94faaSDavid Teigland
27*0b2355feSAndreas Gruenbacher int gfs2_recover_journal(struct gfs2_jdesc *gfs2_jd, bool wait);
28*0b2355feSAndreas Gruenbacher void gfs2_recover_func(struct work_struct *work);
29*0b2355feSAndreas Gruenbacher int __get_log_header(struct gfs2_sbd *sdp,
3040e0e61eSAbhi Das const struct gfs2_log_header *lh, unsigned int blkno,
3140e0e61eSAbhi Das struct gfs2_log_header_host *head);
32b3b94faaSDavid Teigland
33b3b94faaSDavid Teigland #endif /* __RECOVERY_DOT_H__ */
34b3b94faaSDavid Teigland
35