aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/glock.h
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2011-03-09 05:58:04 -0500
committerSteven Whitehouse <swhiteho@redhat.com>2011-03-09 05:58:04 -0500
commitfc0e38dae645f65424d1fb5d2a938aab8ce48a58 (patch)
tree8b0a89a0de01a0504a002a184a290a53545fce82 /fs/gfs2/glock.h
parent662e3a551b468c7338f5291d7a00389fe85885e2 (diff)
GFS2: Fix glock deallocation race
This patch fixes a race in deallocating glocks which was introduced in the RCU glock patch. We need to ensure that the glock count is kept correct even in the case that there is a race to add a new glock into the hash table. Also, to avoid having to wait for an RCU grace period, the glock counter can be decremented before call_rcu() is called. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/glock.h')
-rw-r--r--fs/gfs2/glock.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h
index afa8bfea5647..aea160690e94 100644
--- a/fs/gfs2/glock.h
+++ b/fs/gfs2/glock.h
@@ -230,7 +230,7 @@ extern void gfs2_gl_hash_clear(struct gfs2_sbd *sdp);
230extern void gfs2_glock_finish_truncate(struct gfs2_inode *ip); 230extern void gfs2_glock_finish_truncate(struct gfs2_inode *ip);
231extern void gfs2_glock_thaw(struct gfs2_sbd *sdp); 231extern void gfs2_glock_thaw(struct gfs2_sbd *sdp);
232extern void gfs2_glock_schedule_for_reclaim(struct gfs2_glock *gl); 232extern void gfs2_glock_schedule_for_reclaim(struct gfs2_glock *gl);
233extern void gfs2_glock_free(struct rcu_head *rcu); 233extern void gfs2_glock_free(struct gfs2_glock *gl);
234 234
235extern int __init gfs2_glock_init(void); 235extern int __init gfs2_glock_init(void);
236extern void gfs2_glock_exit(void); 236extern void gfs2_glock_exit(void);