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 */ | |
15 | BH_JBDPrivateStart, /* First bit available for private use by FS */ | |
16 | }; | |
17 | ||
18 | BUFFER_FNS(JBD, jbd) | |
19 | BUFFER_FNS(JWrite, jwrite) | |
20 | BUFFER_FNS(JBDDirty, jbddirty) | |
21 | TAS_BUFFER_FNS(JBDDirty, jbddirty) | |
22 | BUFFER_FNS(Revoked, revoked) | |
23 | TAS_BUFFER_FNS(Revoked, revoked) | |
24 | BUFFER_FNS(RevokeValid, revokevalid) | |
25 | TAS_BUFFER_FNS(RevokeValid, revokevalid) | |
26 | BUFFER_FNS(Freed, freed) | |
27 | ||
28 | static inline struct buffer_head *jh2bh(struct journal_head *jh) | |
29 | { | |
30 | return jh->b_bh; | |
31 | } | |
32 | ||
33 | static inline struct journal_head *bh2jh(struct buffer_head *bh) | |
34 | { | |
35 | return bh->b_private; | |
36 | } | |
37 | ||
38 | static inline void jbd_lock_bh_state(struct buffer_head *bh) | |
39 | { | |
40 | bit_spin_lock(BH_State, &bh->b_state); | |
41 | } | |
42 | ||
43 | static inline int jbd_trylock_bh_state(struct buffer_head *bh) | |
44 | { | |
45 | return bit_spin_trylock(BH_State, &bh->b_state); | |
46 | } | |
47 | ||
48 | static inline int jbd_is_locked_bh_state(struct buffer_head *bh) | |
49 | { | |
50 | return bit_spin_is_locked(BH_State, &bh->b_state); | |
51 | } | |
52 | ||
53 | static inline void jbd_unlock_bh_state(struct buffer_head *bh) | |
54 | { | |
55 | bit_spin_unlock(BH_State, &bh->b_state); | |
56 | } | |
57 | ||
58 | static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) | |
59 | { | |
60 | bit_spin_lock(BH_JournalHead, &bh->b_state); | |
61 | } | |
62 | ||
63 | static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | |
64 | { | |
65 | bit_spin_unlock(BH_JournalHead, &bh->b_state); | |
66 | } | |
67 | ||
68 | #endif |