Loading fs/gfs2/glops.c +3 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading fs/gfs2/incore.h +1 −1 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ struct gfs2_alloc { }; enum { GIF_INVALID = 0, GIF_QD_LOCKED = 1, GIF_PAGED = 2, GIF_SW_PAGED = 3, Loading @@ -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? */ Loading fs/gfs2/inode.c +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading fs/gfs2/ops_inode.c +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
fs/gfs2/glops.c +3 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading
fs/gfs2/incore.h +1 −1 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ struct gfs2_alloc { }; enum { GIF_INVALID = 0, GIF_QD_LOCKED = 1, GIF_PAGED = 2, GIF_SW_PAGED = 3, Loading @@ -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? */ Loading
fs/gfs2/inode.c +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; } Loading
fs/gfs2/ops_inode.c +1 −1 Original line number Diff line number Diff line Loading @@ -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