提交 29d38cd1 编写于 作者: B Bob Peterson 提交者: Steven Whitehouse

[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: NBob Peterson <rpeterso@redhat.com>
Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
上级 42d52e38
...@@ -595,11 +595,12 @@ static void run_queue(struct gfs2_glock *gl) ...@@ -595,11 +595,12 @@ static void run_queue(struct gfs2_glock *gl)
blocked = rq_mutex(gh); blocked = rq_mutex(gh);
} else if (test_bit(GLF_DEMOTE, &gl->gl_flags)) { } else if (test_bit(GLF_DEMOTE, &gl->gl_flags)) {
blocked = rq_demote(gl); 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); set_bit(GLF_DEMOTE, &gl->gl_flags);
gl->gl_demote_state = LM_ST_UNLOCKED; 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)) { } else if (!list_empty(&gl->gl_waiters3)) {
gh = list_entry(gl->gl_waiters3.next, gh = list_entry(gl->gl_waiters3.next,
struct gfs2_holder, gh_list); struct gfs2_holder, gh_list);
...@@ -710,7 +711,7 @@ static void handle_callback(struct gfs2_glock *gl, unsigned int state, ...@@ -710,7 +711,7 @@ static void handle_callback(struct gfs2_glock *gl, unsigned int state,
} else if (gl->gl_demote_state != LM_ST_UNLOCKED && } else if (gl->gl_demote_state != LM_ST_UNLOCKED &&
gl->gl_demote_state != state) { gl->gl_demote_state != state) {
if (test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)) if (test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags))
gl->gl_waiters2 = 1; set_bit(GLF_WAITERS2, &gl->gl_flags);
else else
gl->gl_demote_state = LM_ST_UNLOCKED; gl->gl_demote_state = LM_ST_UNLOCKED;
} }
......
/* /*
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. * 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, * This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions * modify, copy, or redistribute it subject to the terms and conditions
...@@ -167,6 +167,7 @@ enum { ...@@ -167,6 +167,7 @@ enum {
GLF_DIRTY = 5, GLF_DIRTY = 5,
GLF_DEMOTE_IN_PROGRESS = 6, GLF_DEMOTE_IN_PROGRESS = 6,
GLF_LFLUSH = 7, GLF_LFLUSH = 7,
GLF_WAITERS2 = 8,
}; };
struct gfs2_glock { struct gfs2_glock {
...@@ -186,7 +187,6 @@ struct gfs2_glock { ...@@ -186,7 +187,6 @@ struct gfs2_glock {
struct list_head gl_holders; struct list_head gl_holders;
struct list_head gl_waiters1; /* HIF_MUTEX */ struct list_head gl_waiters1; /* HIF_MUTEX */
struct list_head gl_waiters3; /* HIF_PROMOTE */ struct list_head gl_waiters3; /* HIF_PROMOTE */
int gl_waiters2; /* GIF_DEMOTE */
const struct gfs2_glock_operations *gl_ops; const struct gfs2_glock_operations *gl_ops;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册