diff options
Diffstat (limited to 'fs/gfs2/glock.c')
-rw-r--r-- | fs/gfs2/glock.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index f30fde91d14a..81b06812b329 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c | |||
@@ -16,10 +16,13 @@ | |||
16 | #include <linux/sort.h> | 16 | #include <linux/sort.h> |
17 | #include <linux/jhash.h> | 17 | #include <linux/jhash.h> |
18 | #include <linux/kref.h> | 18 | #include <linux/kref.h> |
19 | #include <linux/gfs2_ondisk.h> | ||
19 | #include <asm/semaphore.h> | 20 | #include <asm/semaphore.h> |
20 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
21 | 22 | ||
22 | #include "gfs2.h" | 23 | #include "gfs2.h" |
24 | #include "lm_interface.h" | ||
25 | #include "incore.h" | ||
23 | #include "glock.h" | 26 | #include "glock.h" |
24 | #include "glops.h" | 27 | #include "glops.h" |
25 | #include "inode.h" | 28 | #include "inode.h" |
@@ -28,6 +31,7 @@ | |||
28 | #include "meta_io.h" | 31 | #include "meta_io.h" |
29 | #include "quota.h" | 32 | #include "quota.h" |
30 | #include "super.h" | 33 | #include "super.h" |
34 | #include "util.h" | ||
31 | 35 | ||
32 | /* Must be kept in sync with the beginning of struct gfs2_glock */ | 36 | /* Must be kept in sync with the beginning of struct gfs2_glock */ |
33 | struct glock_plug { | 37 | struct glock_plug { |
@@ -1962,7 +1966,7 @@ void gfs2_try_toss_inode(struct gfs2_sbd *sdp, struct gfs2_inum *inum) | |||
1962 | if (!gfs2_glmutex_trylock(gl)) | 1966 | if (!gfs2_glmutex_trylock(gl)) |
1963 | goto out; | 1967 | goto out; |
1964 | 1968 | ||
1965 | ip = get_gl2ip(gl); | 1969 | ip = gl->gl_object; |
1966 | if (!ip) | 1970 | if (!ip) |
1967 | goto out_unlock; | 1971 | goto out_unlock; |
1968 | 1972 | ||
@@ -1994,7 +1998,7 @@ void gfs2_iopen_go_callback(struct gfs2_glock *io_gl, unsigned int state) | |||
1994 | return; | 1998 | return; |
1995 | 1999 | ||
1996 | spin_lock(&io_gl->gl_spin); | 2000 | spin_lock(&io_gl->gl_spin); |
1997 | i_gl = get_gl2gl(io_gl); | 2001 | i_gl = io_gl->gl_object; |
1998 | if (i_gl) { | 2002 | if (i_gl) { |
1999 | gfs2_glock_hold(i_gl); | 2003 | gfs2_glock_hold(i_gl); |
2000 | spin_unlock(&io_gl->gl_spin); | 2004 | spin_unlock(&io_gl->gl_spin); |
@@ -2004,7 +2008,7 @@ void gfs2_iopen_go_callback(struct gfs2_glock *io_gl, unsigned int state) | |||
2004 | } | 2008 | } |
2005 | 2009 | ||
2006 | if (gfs2_glmutex_trylock(i_gl)) { | 2010 | if (gfs2_glmutex_trylock(i_gl)) { |
2007 | struct gfs2_inode *ip = get_gl2ip(i_gl); | 2011 | struct gfs2_inode *ip = i_gl->gl_object; |
2008 | if (ip) { | 2012 | if (ip) { |
2009 | gfs2_try_toss_vnode(ip); | 2013 | gfs2_try_toss_vnode(ip); |
2010 | gfs2_glmutex_unlock(i_gl); | 2014 | gfs2_glmutex_unlock(i_gl); |
@@ -2093,7 +2097,7 @@ void gfs2_reclaim_glock(struct gfs2_sbd *sdp) | |||
2093 | 2097 | ||
2094 | if (gfs2_glmutex_trylock(gl)) { | 2098 | if (gfs2_glmutex_trylock(gl)) { |
2095 | if (gl->gl_ops == &gfs2_inode_glops) { | 2099 | if (gl->gl_ops == &gfs2_inode_glops) { |
2096 | struct gfs2_inode *ip = get_gl2ip(gl); | 2100 | struct gfs2_inode *ip = gl->gl_object; |
2097 | if (ip && !atomic_read(&ip->i_count)) | 2101 | if (ip && !atomic_read(&ip->i_count)) |
2098 | gfs2_inode_destroy(ip); | 2102 | gfs2_inode_destroy(ip); |
2099 | } | 2103 | } |
@@ -2174,7 +2178,7 @@ static void scan_glock(struct gfs2_glock *gl) | |||
2174 | { | 2178 | { |
2175 | if (gfs2_glmutex_trylock(gl)) { | 2179 | if (gfs2_glmutex_trylock(gl)) { |
2176 | if (gl->gl_ops == &gfs2_inode_glops) { | 2180 | if (gl->gl_ops == &gfs2_inode_glops) { |
2177 | struct gfs2_inode *ip = get_gl2ip(gl); | 2181 | struct gfs2_inode *ip = gl->gl_object; |
2178 | if (ip && !atomic_read(&ip->i_count)) | 2182 | if (ip && !atomic_read(&ip->i_count)) |
2179 | goto out_schedule; | 2183 | goto out_schedule; |
2180 | } | 2184 | } |
@@ -2234,7 +2238,7 @@ static void clear_glock(struct gfs2_glock *gl) | |||
2234 | 2238 | ||
2235 | if (gfs2_glmutex_trylock(gl)) { | 2239 | if (gfs2_glmutex_trylock(gl)) { |
2236 | if (gl->gl_ops == &gfs2_inode_glops) { | 2240 | if (gl->gl_ops == &gfs2_inode_glops) { |
2237 | struct gfs2_inode *ip = get_gl2ip(gl); | 2241 | struct gfs2_inode *ip = gl->gl_object; |
2238 | if (ip && !atomic_read(&ip->i_count)) | 2242 | if (ip && !atomic_read(&ip->i_count)) |
2239 | gfs2_inode_destroy(ip); | 2243 | gfs2_inode_destroy(ip); |
2240 | } | 2244 | } |
@@ -2430,10 +2434,10 @@ static int dump_glock(struct gfs2_glock *gl) | |||
2430 | if (error) | 2434 | if (error) |
2431 | goto out; | 2435 | goto out; |
2432 | } | 2436 | } |
2433 | if (gl->gl_ops == &gfs2_inode_glops && get_gl2ip(gl)) { | 2437 | if (gl->gl_ops == &gfs2_inode_glops && gl->gl_object) { |
2434 | if (!test_bit(GLF_LOCK, &gl->gl_flags) && | 2438 | if (!test_bit(GLF_LOCK, &gl->gl_flags) && |
2435 | list_empty(&gl->gl_holders)) { | 2439 | list_empty(&gl->gl_holders)) { |
2436 | error = dump_inode(get_gl2ip(gl)); | 2440 | error = dump_inode(gl->gl_object); |
2437 | if (error) | 2441 | if (error) |
2438 | goto out; | 2442 | goto out; |
2439 | } else { | 2443 | } else { |