From 4f64bc20ac62dc8cf2555061a4613450d178cf0a Mon Sep 17 00:00:00 2001 From: Steven Whitehouse Date: Mon, 22 Jan 2007 13:09:04 -0500 Subject: [PATCH] --- yaml --- r: 46303 b: refs/heads/master c: 12132933c4fdeb458195a9388287d550c8476edf h: refs/heads/master i: 46301: 6cb65d7f61c4aaad6fc4fbf10104a4bfac60932e 46299: 0f75457a47160fe02a96515267113a4caceb4c03 46295: d26fe602f4cf16b4faa7f8a0df12478c99911d27 46287: b17c8121b96f5b006ed84b9cfa2f2683fd38c50e 46271: 1a9e5b77552bf4002e11f474f41aa09ea02e1efa v: v3 --- [refs] | 2 +- trunk/fs/gfs2/glock.c | 38 +++++++------------------------------- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/[refs] b/[refs] index 837f9003794a..362d2dd65700 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bd44e2b007bc9024bce3357c185b38c73f87c3dd +refs/heads/master: 12132933c4fdeb458195a9388287d550c8476edf diff --git a/trunk/fs/gfs2/glock.c b/trunk/fs/gfs2/glock.c index 5b772bb0210f..1509481b8ca6 100644 --- a/trunk/fs/gfs2/glock.c +++ b/trunk/fs/gfs2/glock.c @@ -210,30 +210,6 @@ int gfs2_glock_put(struct gfs2_glock *gl) return rv; } -/** - * queue_empty - check to see if a glock's queue is empty - * @gl: the glock - * @head: the head of the queue to check - * - * This function protects the list in the event that a process already - * has a holder on the list and is adding a second holder for itself. - * The glmutex lock is what generally prevents processes from working - * on the same glock at once, but the special case of adding a second - * holder for yourself ("recursive" locking) doesn't involve locking - * glmutex, making the spin lock necessary. - * - * Returns: 1 if the queue is empty - */ - -static inline int queue_empty(struct gfs2_glock *gl, struct list_head *head) -{ - int empty; - spin_lock(&gl->gl_spin); - empty = list_empty(head); - spin_unlock(&gl->gl_spin); - return empty; -} - /** * search_bucket() - Find struct gfs2_glock by lock number * @bucket: the bucket to search @@ -814,7 +790,7 @@ static void xmote_bh(struct gfs2_glock *gl, unsigned int ret) int op_done = 1; gfs2_assert_warn(sdp, test_bit(GLF_LOCK, &gl->gl_flags)); - gfs2_assert_warn(sdp, queue_empty(gl, &gl->gl_holders)); + gfs2_assert_warn(sdp, list_empty(&gl->gl_holders)); gfs2_assert_warn(sdp, !(ret & LM_OUT_ASYNC)); state_change(gl, ret & LM_OUT_ST_MASK); @@ -925,7 +901,7 @@ void gfs2_glock_xmote_th(struct gfs2_holder *gh) glops->go_xmote_th(gl); gfs2_assert_warn(sdp, test_bit(GLF_LOCK, &gl->gl_flags)); - gfs2_assert_warn(sdp, queue_empty(gl, &gl->gl_holders)); + gfs2_assert_warn(sdp, list_empty(&gl->gl_holders)); gfs2_assert_warn(sdp, state != LM_ST_UNLOCKED); gfs2_assert_warn(sdp, state != gl->gl_state); @@ -960,7 +936,7 @@ static void drop_bh(struct gfs2_glock *gl, unsigned int ret) struct gfs2_holder *gh = gl->gl_req_gh; gfs2_assert_warn(sdp, test_bit(GLF_LOCK, &gl->gl_flags)); - gfs2_assert_warn(sdp, queue_empty(gl, &gl->gl_holders)); + gfs2_assert_warn(sdp, list_empty(&gl->gl_holders)); gfs2_assert_warn(sdp, !ret); state_change(gl, LM_ST_UNLOCKED); @@ -1007,7 +983,7 @@ static void gfs2_glock_drop_th(struct gfs2_glock *gl) glops->go_drop_th(gl); gfs2_assert_warn(sdp, test_bit(GLF_LOCK, &gl->gl_flags)); - gfs2_assert_warn(sdp, queue_empty(gl, &gl->gl_holders)); + gfs2_assert_warn(sdp, list_empty(&gl->gl_holders)); gfs2_assert_warn(sdp, gl->gl_state != LM_ST_UNLOCKED); gfs2_glock_hold(gl); @@ -1697,7 +1673,7 @@ void gfs2_reclaim_glock(struct gfs2_sbd *sdp) atomic_inc(&sdp->sd_reclaimed); if (gfs2_glmutex_trylock(gl)) { - if (queue_empty(gl, &gl->gl_holders) && + if (list_empty(&gl->gl_holders) && gl->gl_state != LM_ST_UNLOCKED && demote_ok(gl)) handle_callback(gl, LM_ST_UNLOCKED); gfs2_glmutex_unlock(gl); @@ -1761,7 +1737,7 @@ static void scan_glock(struct gfs2_glock *gl) return; if (gfs2_glmutex_trylock(gl)) { - if (queue_empty(gl, &gl->gl_holders) && + if (list_empty(&gl->gl_holders) && gl->gl_state != LM_ST_UNLOCKED && demote_ok(gl)) goto out_schedule; gfs2_glmutex_unlock(gl); @@ -1810,7 +1786,7 @@ static void clear_glock(struct gfs2_glock *gl) } if (gfs2_glmutex_trylock(gl)) { - if (queue_empty(gl, &gl->gl_holders) && + if (list_empty(gl, &gl->gl_holders) && gl->gl_state != LM_ST_UNLOCKED) handle_callback(gl, LM_ST_UNLOCKED); gfs2_glmutex_unlock(gl);