aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/glops.c
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2007-10-15 11:29:05 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2008-01-25 03:07:16 -0500
commitf91a0d3e24e4b0198be5fae20d45a35c40d1efce (patch)
treecda8095f9befd25cbfaf5f63a4c8ca26870d45ca /fs/gfs2/glops.c
parent3cc3f710ce0effe397b830826a1a081fa81f11c7 (diff)
[GFS2] Remove useless i_cache from inodes
The i_cache was designed to keep references to the indirect blocks used during block mapping so that they didn't have to be looked up continually. The idea failed because there are too many places where the i_cache needs to be freed, and this has in the past been the cause of many bugs. In addition there was no performance benefit being gained since the disk blocks in question were cached anyway. So this patch removes it in order to simplify the code to prepare for other changes which would otherwise have had to add further support for this feature. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/glops.c')
-rw-r--r--fs/gfs2/glops.c21
1 files changed, 1 insertions, 20 deletions
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
index 110f03d66f4b..ba124230393b 100644
--- a/fs/gfs2/glops.c
+++ b/fs/gfs2/glops.c
@@ -56,7 +56,7 @@ static void gfs2_ail_empty_gl(struct gfs2_glock *gl)
56 bd = list_entry(head->next, struct gfs2_bufdata, 56 bd = list_entry(head->next, struct gfs2_bufdata,
57 bd_ail_gl_list); 57 bd_ail_gl_list);
58 bh = bd->bd_bh; 58 bh = bd->bd_bh;
59 gfs2_remove_from_ail(NULL, bd); 59 gfs2_remove_from_ail(bd);
60 bd->bd_bh = NULL; 60 bd->bd_bh = NULL;
61 bh->b_private = NULL; 61 bh->b_private = NULL;
62 bd->bd_blkno = bh->b_blocknr; 62 bd->bd_blkno = bh->b_blocknr;
@@ -287,23 +287,6 @@ static int inode_go_lock(struct gfs2_holder *gh)
287} 287}
288 288
289/** 289/**
290 * inode_go_unlock - operation done before an inode lock is unlocked by a
291 * process
292 * @gl: the glock
293 * @flags:
294 *
295 */
296
297static void inode_go_unlock(struct gfs2_holder *gh)
298{
299 struct gfs2_glock *gl = gh->gh_gl;
300 struct gfs2_inode *ip = gl->gl_object;
301
302 if (ip)
303 gfs2_meta_cache_flush(ip);
304}
305
306/**
307 * rgrp_go_demote_ok - Check to see if it's ok to unlock a RG's glock 290 * rgrp_go_demote_ok - Check to see if it's ok to unlock a RG's glock
308 * @gl: the glock 291 * @gl: the glock
309 * 292 *
@@ -377,7 +360,6 @@ static void trans_go_xmote_bh(struct gfs2_glock *gl)
377 360
378 if (gl->gl_state != LM_ST_UNLOCKED && 361 if (gl->gl_state != LM_ST_UNLOCKED &&
379 test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) { 362 test_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags)) {
380 gfs2_meta_cache_flush(GFS2_I(sdp->sd_jdesc->jd_inode));
381 j_gl->gl_ops->go_inval(j_gl, DIO_METADATA); 363 j_gl->gl_ops->go_inval(j_gl, DIO_METADATA);
382 364
383 error = gfs2_find_jhead(sdp->sd_jdesc, &head); 365 error = gfs2_find_jhead(sdp->sd_jdesc, &head);
@@ -437,7 +419,6 @@ const struct gfs2_glock_operations gfs2_inode_glops = {
437 .go_inval = inode_go_inval, 419 .go_inval = inode_go_inval,
438 .go_demote_ok = inode_go_demote_ok, 420 .go_demote_ok = inode_go_demote_ok,
439 .go_lock = inode_go_lock, 421 .go_lock = inode_go_lock,
440 .go_unlock = inode_go_unlock,
441 .go_type = LM_TYPE_INODE, 422 .go_type = LM_TYPE_INODE,
442 .go_min_hold_time = HZ / 10, 423 .go_min_hold_time = HZ / 10,
443}; 424};