diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2007-10-15 11:29:05 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2008-01-25 03:07:16 -0500 |
commit | f91a0d3e24e4b0198be5fae20d45a35c40d1efce (patch) | |
tree | cda8095f9befd25cbfaf5f63a4c8ca26870d45ca /fs/gfs2/glops.c | |
parent | 3cc3f710ce0effe397b830826a1a081fa81f11c7 (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.c | 21 |
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 | |||
297 | static 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 | }; |