Commit | Line | Data |
---|---|---|
44606672 TG |
1 | #ifndef _LINUX_JBD_STATE_H |
2 | #define _LINUX_JBD_STATE_H | |
3 | ||
4 | enum jbd_state_bits { | |
5 | BH_JBD /* Has an attached ext3 journal_head */ | |
6 | = BH_PrivateStart, | |
7 | BH_JWrite, /* Being written to log (@@@ DEBUGGING) */ | |
8 | BH_Freed, /* Has been freed (truncated) */ | |
9 | BH_Revoked, /* Has been revoked from the log */ | |
10 | BH_RevokeValid, /* Revoked flag is valid */ | |
11 | BH_JBDDirty, /* Is dirty but journaled */ | |
12 | BH_State, /* Pins most journal_head state */ | |
13 | BH_JournalHead, /* Pins bh->b_private and jh->b_bh */ | |
14 | BH_Unshadow, /* Dummy bit, for BJ_Shadow wakeup filtering */ | |
f8489128 | 15 | BH_Verified, /* Metadata block has been verified ok */ |
44606672 TG |
16 | BH_JBDPrivateStart, /* First bit available for private use by FS */ |
17 | }; | |
18 | ||
19 | BUFFER_FNS(JBD, jbd) | |
20 | BUFFER_FNS(JWrite, jwrite) | |
21 | BUFFER_FNS(JBDDirty, jbddirty) | |
22 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | |
23 | BUFFER_FNS(Revoked, revoked) | |
24 | TAS_BUFFER_FNS(Revoked, revoked) | |
25 | BUFFER_FNS(RevokeValid, revokevalid) | |
26 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | |
27 | BUFFER_FNS(Freed, freed) | |
f8489128 | 28 | BUFFER_FNS(Verified, verified) |
44606672 TG |
29 | |
30 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | |
31 | { | |
32 | return jh->b_bh; | |
33 | } | |
34 | ||
35 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | |
36 | { | |
37 | return bh->b_private; | |
38 | } | |
39 | ||
40 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | |
41 | { | |
42 | bit_spin_lock(BH_State, &bh->b_state); | |
43 | } | |
44 | ||
45 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | |
46 | { | |
47 | return bit_spin_trylock(BH_State, &bh->b_state); | |
48 | } | |
49 | ||
50 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | |
51 | { | |
52 | return bit_spin_is_locked(BH_State, &bh->b_state); | |
53 | } | |
54 | ||
55 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | |
56 | { | |
57 | bit_spin_unlock(BH_State, &bh->b_state); | |
58 | } | |
59 | ||
60 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | |
61 | { | |
62 | bit_spin_lock(BH_JournalHead, &bh->b_state); | |
63 | } | |
64 | ||
65 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | |
66 | { | |
67 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | |
68 | } | |
69 | ||
70 | #endif |