diff options
Diffstat (limited to 'fs/gfs2/glock.c')
-rw-r--r-- | fs/gfs2/glock.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index a23524aa3eac..aeb7bc958a18 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c | |||
@@ -173,19 +173,14 @@ void gfs2_glock_add_to_lru(struct gfs2_glock *gl) | |||
173 | spin_unlock(&lru_lock); | 173 | spin_unlock(&lru_lock); |
174 | } | 174 | } |
175 | 175 | ||
176 | static void __gfs2_glock_remove_from_lru(struct gfs2_glock *gl) | 176 | static void gfs2_glock_remove_from_lru(struct gfs2_glock *gl) |
177 | { | 177 | { |
178 | spin_lock(&lru_lock); | ||
178 | if (!list_empty(&gl->gl_lru)) { | 179 | if (!list_empty(&gl->gl_lru)) { |
179 | list_del_init(&gl->gl_lru); | 180 | list_del_init(&gl->gl_lru); |
180 | atomic_dec(&lru_count); | 181 | atomic_dec(&lru_count); |
181 | clear_bit(GLF_LRU, &gl->gl_flags); | 182 | clear_bit(GLF_LRU, &gl->gl_flags); |
182 | } | 183 | } |
183 | } | ||
184 | |||
185 | static void gfs2_glock_remove_from_lru(struct gfs2_glock *gl) | ||
186 | { | ||
187 | spin_lock(&lru_lock); | ||
188 | __gfs2_glock_remove_from_lru(gl); | ||
189 | spin_unlock(&lru_lock); | 184 | spin_unlock(&lru_lock); |
190 | } | 185 | } |
191 | 186 | ||
@@ -205,9 +200,7 @@ void gfs2_glock_put(struct gfs2_glock *gl) | |||
205 | 200 | ||
206 | lockref_mark_dead(&gl->gl_lockref); | 201 | lockref_mark_dead(&gl->gl_lockref); |
207 | 202 | ||
208 | spin_lock(&lru_lock); | 203 | gfs2_glock_remove_from_lru(gl); |
209 | __gfs2_glock_remove_from_lru(gl); | ||
210 | spin_unlock(&lru_lock); | ||
211 | spin_unlock(&gl->gl_lockref.lock); | 204 | spin_unlock(&gl->gl_lockref.lock); |
212 | spin_lock_bucket(gl->gl_hash); | 205 | spin_lock_bucket(gl->gl_hash); |
213 | hlist_bl_del_rcu(&gl->gl_list); | 206 | hlist_bl_del_rcu(&gl->gl_list); |