Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bfded27b authored by Steven Whitehouse's avatar Steven Whitehouse
Browse files

[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
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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? */
+2 −2
Original line number Diff line number Diff line
@@ -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;
}
+1 −1
Original line number Diff line number Diff line
@@ -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);