aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/ops_address.c
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2006-08-18 15:51:09 -0400
committerSteven Whitehouse <swhiteho@redhat.com>2006-08-18 15:51:09 -0400
commit15d00c0b91ca776b51b5ab04f79ab35b06670d30 (patch)
treea970b4f59086ecbf7d20ec9b2201cf26b8446019 /fs/gfs2/ops_address.c
parentfcc8abc8d4fcdbddc383091449f3696b411aa8fb (diff)
[GFS2] Fix leak of gfs2_bufdata
This fixes a memory leak of struct gfs2_bufdata and also some problems in the ordered write handling code. It needs a bit more testing, but I believe that the reference counting of ordered write buffers should now be correct. This is aimed at fixing Red Hat bugzilla: #201028 and #201082 Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/ops_address.c')
-rw-r--r--fs/gfs2/ops_address.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/fs/gfs2/ops_address.c b/fs/gfs2/ops_address.c
index 45afd0508689..4c59cb110995 100644
--- a/fs/gfs2/ops_address.c
+++ b/fs/gfs2/ops_address.c
@@ -581,10 +581,8 @@ static void discard_buffer(struct gfs2_sbd *sdp, struct buffer_head *bh)
581 if (bd) { 581 if (bd) {
582 bd->bd_bh = NULL; 582 bd->bd_bh = NULL;
583 bh->b_private = NULL; 583 bh->b_private = NULL;
584 gfs2_log_unlock(sdp); 584 }
585 brelse(bh); 585 gfs2_log_unlock(sdp);
586 } else
587 gfs2_log_unlock(sdp);
588 586
589 lock_buffer(bh); 587 lock_buffer(bh);
590 clear_buffer_dirty(bh); 588 clear_buffer_dirty(bh);
@@ -598,7 +596,7 @@ static void discard_buffer(struct gfs2_sbd *sdp, struct buffer_head *bh)
598 596
599static void gfs2_invalidatepage(struct page *page, unsigned long offset) 597static void gfs2_invalidatepage(struct page *page, unsigned long offset)
600{ 598{
601 struct gfs2_sbd *sdp = page->mapping->host->i_sb->s_fs_info; 599 struct gfs2_sbd *sdp = GFS2_SB(page->mapping->host);
602 struct buffer_head *head, *bh, *next; 600 struct buffer_head *head, *bh, *next;
603 unsigned int curr_off = 0; 601 unsigned int curr_off = 0;
604 602