jbd_common.h 1.8 KB

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