[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:
@@ -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
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user