[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: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
parent
a9583c7983
commit
bfded27ba0
4 changed files with 7 additions and 6 deletions
|
@ -305,8 +305,9 @@ static void inode_go_inval(struct gfs2_glock *gl, int flags)
|
|||
int data = (flags & DIO_DATA);
|
||||
|
||||
if (meta) {
|
||||
struct gfs2_inode *ip = gl->gl_object;
|
||||
gfs2_meta_inval(gl);
|
||||
gl->gl_vn++;
|
||||
set_bit(GIF_INVALID, &ip->i_flags);
|
||||
}
|
||||
if (data)
|
||||
gfs2_page_inval(gl);
|
||||
|
@ -351,7 +352,7 @@ static int inode_go_lock(struct gfs2_holder *gh)
|
|||
if (!ip)
|
||||
return 0;
|
||||
|
||||
if (ip->i_vn != gl->gl_vn) {
|
||||
if (test_bit(GIF_INVALID, &ip->i_flags)) {
|
||||
error = gfs2_inode_refresh(ip);
|
||||
if (error)
|
||||
return error;
|
||||
|
|
|
@ -217,6 +217,7 @@ struct gfs2_alloc {
|
|||
};
|
||||
|
||||
enum {
|
||||
GIF_INVALID = 0,
|
||||
GIF_QD_LOCKED = 1,
|
||||
GIF_PAGED = 2,
|
||||
GIF_SW_PAGED = 3,
|
||||
|
@ -228,7 +229,6 @@ struct gfs2_inode {
|
|||
|
||||
unsigned long i_flags; /* GIF_... */
|
||||
|
||||
u64 i_vn;
|
||||
struct gfs2_dinode_host i_di; /* To be replaced by ref to block */
|
||||
|
||||
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
|
|||
if (unlikely(error))
|
||||
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);
|
||||
if (unlikely(error))
|
||||
goto fail_iopen;
|
||||
|
@ -242,7 +242,7 @@ int gfs2_inode_refresh(struct gfs2_inode *ip)
|
|||
|
||||
error = gfs2_dinode_in(ip, dibh->b_data);
|
||||
brelse(dibh);
|
||||
ip->i_vn = ip->i_gl->gl_vn;
|
||||
clear_bit(GIF_INVALID, &ip->i_flags);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -844,7 +844,7 @@ static int gfs2_permission(struct inode *inode, int mask, struct nameidata *nd)
|
|||
struct gfs2_holder i_gh;
|
||||
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);
|
||||
|
||||
error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh);
|
||||
|
|
Loading…
Reference in a new issue