diff options
Diffstat (limited to 'fs/gfs2/glock.h')
-rw-r--r-- | fs/gfs2/glock.h | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h index cdad3e6f8150..971d92af70fc 100644 --- a/fs/gfs2/glock.h +++ b/fs/gfs2/glock.h | |||
@@ -26,11 +26,8 @@ | |||
26 | #define GL_SKIP 0x00000100 | 26 | #define GL_SKIP 0x00000100 |
27 | #define GL_ATIME 0x00000200 | 27 | #define GL_ATIME 0x00000200 |
28 | #define GL_NOCACHE 0x00000400 | 28 | #define GL_NOCACHE 0x00000400 |
29 | #define GL_FLOCK 0x00000800 | ||
30 | #define GL_NOCANCEL 0x00001000 | ||
31 | 29 | ||
32 | #define GLR_TRYFAILED 13 | 30 | #define GLR_TRYFAILED 13 |
33 | #define GLR_CANCELED 14 | ||
34 | 31 | ||
35 | static inline struct gfs2_holder *gfs2_glock_is_locked_by_me(struct gfs2_glock *gl) | 32 | static inline struct gfs2_holder *gfs2_glock_is_locked_by_me(struct gfs2_glock *gl) |
36 | { | 33 | { |
@@ -41,6 +38,8 @@ static inline struct gfs2_holder *gfs2_glock_is_locked_by_me(struct gfs2_glock * | |||
41 | spin_lock(&gl->gl_spin); | 38 | spin_lock(&gl->gl_spin); |
42 | pid = task_pid(current); | 39 | pid = task_pid(current); |
43 | list_for_each_entry(gh, &gl->gl_holders, gh_list) { | 40 | list_for_each_entry(gh, &gl->gl_holders, gh_list) { |
41 | if (!test_bit(HIF_HOLDER, &gh->gh_iflags)) | ||
42 | break; | ||
44 | if (gh->gh_owner_pid == pid) | 43 | if (gh->gh_owner_pid == pid) |
45 | goto out; | 44 | goto out; |
46 | } | 45 | } |
@@ -70,7 +69,7 @@ static inline int gfs2_glock_is_blocking(struct gfs2_glock *gl) | |||
70 | { | 69 | { |
71 | int ret; | 70 | int ret; |
72 | spin_lock(&gl->gl_spin); | 71 | spin_lock(&gl->gl_spin); |
73 | ret = test_bit(GLF_DEMOTE, &gl->gl_flags) || !list_empty(&gl->gl_waiters3); | 72 | ret = test_bit(GLF_DEMOTE, &gl->gl_flags); |
74 | spin_unlock(&gl->gl_spin); | 73 | spin_unlock(&gl->gl_spin); |
75 | return ret; | 74 | return ret; |
76 | } | 75 | } |
@@ -98,6 +97,7 @@ int gfs2_glock_nq_num(struct gfs2_sbd *sdp, | |||
98 | int gfs2_glock_nq_m(unsigned int num_gh, struct gfs2_holder *ghs); | 97 | int gfs2_glock_nq_m(unsigned int num_gh, struct gfs2_holder *ghs); |
99 | void gfs2_glock_dq_m(unsigned int num_gh, struct gfs2_holder *ghs); | 98 | void gfs2_glock_dq_m(unsigned int num_gh, struct gfs2_holder *ghs); |
100 | void gfs2_glock_dq_uninit_m(unsigned int num_gh, struct gfs2_holder *ghs); | 99 | void gfs2_glock_dq_uninit_m(unsigned int num_gh, struct gfs2_holder *ghs); |
100 | void gfs2_print_dbg(struct seq_file *seq, const char *fmt, ...); | ||
101 | 101 | ||
102 | /** | 102 | /** |
103 | * gfs2_glock_nq_init - intialize a holder and enqueue it on a glock | 103 | * gfs2_glock_nq_init - intialize a holder and enqueue it on a glock |
@@ -130,10 +130,9 @@ int gfs2_lvb_hold(struct gfs2_glock *gl); | |||
130 | void gfs2_lvb_unhold(struct gfs2_glock *gl); | 130 | void gfs2_lvb_unhold(struct gfs2_glock *gl); |
131 | 131 | ||
132 | void gfs2_glock_cb(void *cb_data, unsigned int type, void *data); | 132 | void gfs2_glock_cb(void *cb_data, unsigned int type, void *data); |
133 | |||
134 | void gfs2_glock_schedule_for_reclaim(struct gfs2_glock *gl); | 133 | void gfs2_glock_schedule_for_reclaim(struct gfs2_glock *gl); |
135 | void gfs2_reclaim_glock(struct gfs2_sbd *sdp); | 134 | void gfs2_reclaim_glock(struct gfs2_sbd *sdp); |
136 | void gfs2_gl_hash_clear(struct gfs2_sbd *sdp, int wait); | 135 | void gfs2_gl_hash_clear(struct gfs2_sbd *sdp); |
137 | 136 | ||
138 | int __init gfs2_glock_init(void); | 137 | int __init gfs2_glock_init(void); |
139 | void gfs2_glock_exit(void); | 138 | void gfs2_glock_exit(void); |