diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2011-10-27 04:38:18 -0400 | 
|---|---|---|
| committer | Theodore Ts'o <tytso@mit.edu> | 2011-10-27 04:38:18 -0400 | 
| commit | 446066724c3629664e29942a00b0aee0d6b1663a (patch) | |
| tree | 277cae3f42649cdd32b4841949e74c5cf9212f1f | |
| parent | 44705754610dbc63503bc7679ff9d9f84978a76f (diff) | |
| download | olio-linux-3.10-446066724c3629664e29942a00b0aee0d6b1663a.tar.xz olio-linux-3.10-446066724c3629664e29942a00b0aee0d6b1663a.zip  | |
jdb/jbd2: factor out common functions from the jbd[2] header files
The state bits and the lock functions of jbd and jbd2 are
identical.  Share them.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
| -rw-r--r-- | include/linux/jbd.h | 64 | ||||
| -rw-r--r-- | include/linux/jbd2.h | 65 | ||||
| -rw-r--r-- | include/linux/jbd_common.h | 68 | 
3 files changed, 70 insertions, 127 deletions
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index e6a5e34bed4..c7acdde3243 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h @@ -244,6 +244,7 @@ typedef struct journal_superblock_s  #include <linux/fs.h>  #include <linux/sched.h> +#include <linux/jbd_common.h>  #define J_ASSERT(assert)	BUG_ON(!(assert)) @@ -270,69 +271,6 @@ typedef struct journal_superblock_s  #define J_EXPECT_JH(jh, expr, why...)	__journal_expect(expr, ## why)  #endif -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 */ -}; - -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); -} -  struct jbd_revoke_table_s;  /** diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 3dd101e49d3..2092ea21e46 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -275,6 +275,7 @@ typedef struct journal_superblock_s  #include <linux/fs.h>  #include <linux/sched.h> +#include <linux/jbd_common.h>  #define J_ASSERT(assert)	BUG_ON(!(assert)) @@ -302,70 +303,6 @@ typedef struct journal_superblock_s  #define J_EXPECT_JH(jh, expr, why...)	__journal_expect(expr, ## why)  #endif -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); -} -  /* Flags in jbd_inode->i_flags */  #define __JI_COMMIT_RUNNING 0  /* Commit of the inode data in progress. We use this flag to protect us from 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  |