Commit bfded27b authored by Steven Whitehouse's avatar Steven Whitehouse

[GFS2] Shrink gfs2_inode (8) - i_vn

This shrinks the size of the gfs2_inode by 8 bytes by
replacing the version counter with a one bit valid/invalid
flag.
Signed-off-by: default avatarSteven Whitehouse <swhiteho@redhat.com>
parent a9583c79
...@@ -305,8 +305,9 @@ static void inode_go_inval(struct gfs2_glock *gl, int flags) ...@@ -305,8 +305,9 @@ static void inode_go_inval(struct gfs2_glock *gl, int flags)
int data = (flags & DIO_DATA); int data = (flags & DIO_DATA);
if (meta) { if (meta) {
struct gfs2_inode *ip = gl->gl_object;
gfs2_meta_inval(gl); gfs2_meta_inval(gl);
gl->gl_vn++; set_bit(GIF_INVALID, &ip->i_flags);
} }
if (data) if (data)
gfs2_page_inval(gl); gfs2_page_inval(gl);
...@@ -351,7 +352,7 @@ static int inode_go_lock(struct gfs2_holder *gh) ...@@ -351,7 +352,7 @@ static int inode_go_lock(struct gfs2_holder *gh)
if (!ip) if (!ip)
return 0; return 0;
if (ip->i_vn != gl->gl_vn) { if (test_bit(GIF_INVALID, &ip->i_flags)) {
error = gfs2_inode_refresh(ip); error = gfs2_inode_refresh(ip);
if (error) if (error)
return error; return error;
......
...@@ -217,6 +217,7 @@ struct gfs2_alloc { ...@@ -217,6 +217,7 @@ struct gfs2_alloc {
}; };
enum { enum {
GIF_INVALID = 0,
GIF_QD_LOCKED = 1, GIF_QD_LOCKED = 1,
GIF_PAGED = 2, GIF_PAGED = 2,
GIF_SW_PAGED = 3, GIF_SW_PAGED = 3,
...@@ -228,7 +229,6 @@ struct gfs2_inode { ...@@ -228,7 +229,6 @@ struct gfs2_inode {
unsigned long i_flags; /* GIF_... */ unsigned long i_flags; /* GIF_... */
u64 i_vn;
struct gfs2_dinode_host i_di; /* To be replaced by ref to block */ struct gfs2_dinode_host i_di; /* To be replaced by ref to block */
struct gfs2_glock *i_gl; /* Move into i_gh? */ struct gfs2_glock *i_gl; /* Move into i_gh? */
......
...@@ -145,7 +145,7 @@ struct inode *gfs2_inode_lookup(struct super_block *sb, struct gfs2_inum_host *i ...@@ -145,7 +145,7 @@ struct inode *gfs2_inode_lookup(struct super_block *sb, struct gfs2_inum_host *i
if (unlikely(error)) if (unlikely(error))
goto fail_put; goto fail_put;
ip->i_vn = ip->i_gl->gl_vn - 1; set_bit(GIF_INVALID, &ip->i_flags);
error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, &ip->i_iopen_gh); error = gfs2_glock_nq_init(io_gl, LM_ST_SHARED, GL_EXACT, &ip->i_iopen_gh);
if (unlikely(error)) if (unlikely(error))
goto fail_iopen; goto fail_iopen;
...@@ -242,7 +242,7 @@ int gfs2_inode_refresh(struct gfs2_inode *ip) ...@@ -242,7 +242,7 @@ int gfs2_inode_refresh(struct gfs2_inode *ip)
error = gfs2_dinode_in(ip, dibh->b_data); error = gfs2_dinode_in(ip, dibh->b_data);
brelse(dibh); brelse(dibh);
ip->i_vn = ip->i_gl->gl_vn; clear_bit(GIF_INVALID, &ip->i_flags);
return error; return error;
} }
......
...@@ -844,7 +844,7 @@ static int gfs2_permission(struct inode *inode, int mask, struct nameidata *nd) ...@@ -844,7 +844,7 @@ static int gfs2_permission(struct inode *inode, int mask, struct nameidata *nd)
struct gfs2_holder i_gh; struct gfs2_holder i_gh;
int error; int error;
if (ip->i_vn == ip->i_gl->gl_vn) if (!test_bit(GIF_INVALID, &ip->i_flags))
return generic_permission(inode, mask, gfs2_check_acl); return generic_permission(inode, mask, gfs2_check_acl);
error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh); error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment