summaryrefslogtreecommitdiffstats
path: root/fs/gfs2/incore.h
diff options
context:
space:
mode:
authorSteven Whitehouse2006-09-08 19:35:56 +0200
committerSteven Whitehouse2006-09-08 19:35:56 +0200
commit37b2fa6a24f996d751dc80fbc8a77602cead269b (patch)
tree2b96dc483c92593fac467076e76433f6fd6297be /fs/gfs2/incore.h
parent[GFS2] Use void * instead of typedef for locking module interface (diff)
downloadkernel-qcow2-linux-37b2fa6a24f996d751dc80fbc8a77602cead269b.tar.gz
kernel-qcow2-linux-37b2fa6a24f996d751dc80fbc8a77602cead269b.tar.xz
kernel-qcow2-linux-37b2fa6a24f996d751dc80fbc8a77602cead269b.zip
[GFS2] Move rwlocks in glock.c into their own array
This splits the rwlocks guarding the hash chains of the glock hash table into their own array. This will reduce memory usage in some cases due to better alignment, although the real reason for doing it is to allow the two tables to be different sizes in future (i.e. the locks will be sized proportionally with the max number of CPUs and the hash chains sized proportinally with the size of physical memory) In order to allow this, the gl_bucket member of struct gfs2_glock has now become gl_hash, so we record the hash rather than a pointer to the bucket itself. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/incore.h')
-rw-r--r--fs/gfs2/incore.h7
1 files changed, 1 insertions, 6 deletions
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
index 9f5d98ff823a..f50ea6282e77 100644
--- a/fs/gfs2/incore.h
+++ b/fs/gfs2/incore.h
@@ -106,11 +106,6 @@ struct gfs2_bufdata {
struct list_head bd_ail_gl_list;
};
-struct gfs2_gl_hash_bucket {
- rwlock_t hb_lock;
- struct list_head hb_list;
-};
-
struct gfs2_glock_operations {
void (*go_xmote_th) (struct gfs2_glock * gl, unsigned int state,
int flags);
@@ -175,6 +170,7 @@ struct gfs2_glock {
spinlock_t gl_spin;
unsigned int gl_state;
+ unsigned int gl_hash;
struct task_struct *gl_owner;
unsigned long gl_ip;
struct list_head gl_holders;
@@ -195,7 +191,6 @@ struct gfs2_glock {
unsigned long gl_stamp;
void *gl_object;
- struct gfs2_gl_hash_bucket *gl_bucket;
struct list_head gl_reclaim;
struct gfs2_sbd *gl_sbd;