[GFS2] Get rid of gl_waiters2
This patch reduces memory by replacing the int variable gl_waiters2 by a single bit in the gl_flags. Signed-off-by: Bob Peterson <rpeterso@redhat.com> Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
42d52e3818
commit
29d38cd163
2 changed files with 6 additions and 5 deletions
|
@ -595,11 +595,12 @@ static void run_queue(struct gfs2_glock *gl)
|
|||
blocked = rq_mutex(gh);
|
||||
} else if (test_bit(GLF_DEMOTE, &gl->gl_flags)) {
|
||||
blocked = rq_demote(gl);
|
||||
if (gl->gl_waiters2 && !blocked) {
|
||||
if (test_bit(GLF_WAITERS2, &gl->gl_flags) &&
|
||||
!blocked) {
|
||||
set_bit(GLF_DEMOTE, &gl->gl_flags);
|
||||
gl->gl_demote_state = LM_ST_UNLOCKED;
|
||||
}
|
||||
gl->gl_waiters2 = 0;
|
||||
clear_bit(GLF_WAITERS2, &gl->gl_flags);
|
||||
} else if (!list_empty(&gl->gl_waiters3)) {
|
||||
gh = list_entry(gl->gl_waiters3.next,
|
||||
struct gfs2_holder, gh_list);
|
||||
|
@ -710,7 +711,7 @@ static void handle_callback(struct gfs2_glock *gl, unsigned int state,
|
|||
} else if (gl->gl_demote_state != LM_ST_UNLOCKED &&
|
||||
gl->gl_demote_state != state) {
|
||||
if (test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags))
|
||||
gl->gl_waiters2 = 1;
|
||||
set_bit(GLF_WAITERS2, &gl->gl_flags);
|
||||
else
|
||||
gl->gl_demote_state = LM_ST_UNLOCKED;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
||||
* Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved.
|
||||
* Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use,
|
||||
* modify, copy, or redistribute it subject to the terms and conditions
|
||||
|
@ -167,6 +167,7 @@ enum {
|
|||
GLF_DIRTY = 5,
|
||||
GLF_DEMOTE_IN_PROGRESS = 6,
|
||||
GLF_LFLUSH = 7,
|
||||
GLF_WAITERS2 = 8,
|
||||
};
|
||||
|
||||
struct gfs2_glock {
|
||||
|
@ -186,7 +187,6 @@ struct gfs2_glock {
|
|||
struct list_head gl_holders;
|
||||
struct list_head gl_waiters1; /* HIF_MUTEX */
|
||||
struct list_head gl_waiters3; /* HIF_PROMOTE */
|
||||
int gl_waiters2; /* GIF_DEMOTE */
|
||||
|
||||
const struct gfs2_glock_operations *gl_ops;
|
||||
|
||||
|
|
Loading…
Reference in a new issue