[GFS2] Use a bio to read the superblock

This means that we don't need to create a special inode just to contain
a struct address_space in order to read a single disk block. Instead
we read the disk block directly. Its slightly faster, and uses slightly
less memory, but the real reason for doing this is that it removes a
special case from the glock code.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
Steven Whitehouse
2006-07-27 13:53:53 -04:00
parent ae4a382004
commit f45b7ddd2b
4 changed files with 64 additions and 35 deletions

View File

@@ -156,18 +156,6 @@ static void meta_go_inval(struct gfs2_glock *gl, int flags)
gl->gl_vn++;
}
/**
* meta_go_demote_ok - Check to see if it's ok to unlock a glock
* @gl: the glock
*
* Returns: 1 if we have no cached data; ok to demote meta glock
*/
static int meta_go_demote_ok(struct gfs2_glock *gl)
{
return !gl->gl_aspace->i_mapping->nrpages;
}
/**
* inode_go_xmote_th - promote/demote a glock
* @gl: the glock
@@ -338,11 +326,12 @@ static void inode_go_unlock(struct gfs2_holder *gh)
struct gfs2_glock *gl = gh->gh_gl;
struct gfs2_inode *ip = gl->gl_object;
if (ip && test_bit(GLF_DIRTY, &gl->gl_flags))
gfs2_inode_attr_in(ip);
if (ip) {
if (test_bit(GLF_DIRTY, &gl->gl_flags))
gfs2_inode_attr_in(ip);
if (ip)
gfs2_meta_cache_flush(ip);
}
}
/**
@@ -507,9 +496,6 @@ static int quota_go_demote_ok(struct gfs2_glock *gl)
struct gfs2_glock_operations gfs2_meta_glops = {
.go_xmote_th = gfs2_glock_xmote_th,
.go_drop_th = gfs2_glock_drop_th,
.go_sync = meta_go_sync,
.go_inval = meta_go_inval,
.go_demote_ok = meta_go_demote_ok,
.go_type = LM_TYPE_META
};