[PATCH 49/51] [GFS2] Get superblock a different way

From: swhiteho
Date: Thu Oct 04 2007 - 05:36:24 EST


From: Steven Whitehouse <swhiteho@xxxxxxxxxx>

The mapping may be NULL by the time the I/O has completed, so
we now get the superblock by a different route (via the bd and glock)
to avoid this problem.

Signed-off-by: Steven Whitehouse <swhiteho@xxxxxxxxxx>
Cc: Wendy Cheng <wcheng@xxxxxxxxxx>

diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
index ee70467..7df7024 100644
--- a/fs/gfs2/log.c
+++ b/fs/gfs2/log.c
@@ -513,7 +513,8 @@ struct buffer_head *gfs2_log_get_buf(struct gfs2_sbd *sdp)
static void gfs2_fake_write_endio(struct buffer_head *bh, int uptodate)
{
struct buffer_head *real_bh = bh->b_private;
- struct gfs2_sbd *sdp = GFS2_SB(real_bh->b_page->mapping->host);
+ struct gfs2_bufdata *bd = real_bh->b_private;
+ struct gfs2_sbd *sdp = bd->bd_gl->gl_sbd;

end_buffer_write_sync(bh, uptodate);
free_buffer_head(bh);
--
1.5.1.2

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/