diff options
Diffstat (limited to 'include/linux/jbd_common.h')
| -rw-r--r-- | include/linux/jbd_common.h | 68 | 
1 files changed, 68 insertions, 0 deletions
diff --git a/include/linux/jbd_common.h b/include/linux/jbd_common.h new file mode 100644 index 00000000000..6230f8556a4 --- /dev/null +++ b/include/linux/jbd_common.h @@ -0,0 +1,68 @@ +#ifndef _LINUX_JBD_STATE_H +#define _LINUX_JBD_STATE_H + +enum jbd_state_bits { +	BH_JBD			/* Has an attached ext3 journal_head */ +	  = BH_PrivateStart, +	BH_JWrite,		/* Being written to log (@@@ DEBUGGING) */ +	BH_Freed,		/* Has been freed (truncated) */ +	BH_Revoked,		/* Has been revoked from the log */ +	BH_RevokeValid,		/* Revoked flag is valid */ +	BH_JBDDirty,		/* Is dirty but journaled */ +	BH_State,		/* Pins most journal_head state */ +	BH_JournalHead,		/* Pins bh->b_private and jh->b_bh */ +	BH_Unshadow,		/* Dummy bit, for BJ_Shadow wakeup filtering */ +	BH_JBDPrivateStart,	/* First bit available for private use by FS */ +}; + +BUFFER_FNS(JBD, jbd) +BUFFER_FNS(JWrite, jwrite) +BUFFER_FNS(JBDDirty, jbddirty) +TAS_BUFFER_FNS(JBDDirty, jbddirty) +BUFFER_FNS(Revoked, revoked) +TAS_BUFFER_FNS(Revoked, revoked) +BUFFER_FNS(RevokeValid, revokevalid) +TAS_BUFFER_FNS(RevokeValid, revokevalid) +BUFFER_FNS(Freed, freed) + +static inline struct buffer_head *jh2bh(struct journal_head *jh) +{ +	return jh->b_bh; +} + +static inline struct journal_head *bh2jh(struct buffer_head *bh) +{ +	return bh->b_private; +} + +static inline void jbd_lock_bh_state(struct buffer_head *bh) +{ +	bit_spin_lock(BH_State, &bh->b_state); +} + +static inline int jbd_trylock_bh_state(struct buffer_head *bh) +{ +	return bit_spin_trylock(BH_State, &bh->b_state); +} + +static inline int jbd_is_locked_bh_state(struct buffer_head *bh) +{ +	return bit_spin_is_locked(BH_State, &bh->b_state); +} + +static inline void jbd_unlock_bh_state(struct buffer_head *bh) +{ +	bit_spin_unlock(BH_State, &bh->b_state); +} + +static inline void jbd_lock_bh_journal_head(struct buffer_head *bh) +{ +	bit_spin_lock(BH_JournalHead, &bh->b_state); +} + +static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) +{ +	bit_spin_unlock(BH_JournalHead, &bh->b_state); +} + +#endif  |