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

Commit d0546426 authored by Eric W. Biederman's avatar Eric W. Biederman
Browse files

gfs2: Convert uids and gids between dinodes and vfs inodes.



When reading dinodes from the disk convert uids and gids
into kuids and kgids to store in vfs data structures.

When writing to dinodes to the disk convert kuids and kgids
in the in memory structures into plain uids and gids.

For now all on disk data structures are assumed to be
stored in the initial user namespace.

Cc: Steven Whitehouse <swhiteho@redhat.com>
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 6b24c0d2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -322,8 +322,8 @@ static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
		break;
	};

	ip->i_inode.i_uid = be32_to_cpu(str->di_uid);
	ip->i_inode.i_gid = be32_to_cpu(str->di_gid);
	i_uid_write(&ip->i_inode, be32_to_cpu(str->di_uid));
	i_gid_write(&ip->i_inode, be32_to_cpu(str->di_gid));
	gfs2_set_nlink(&ip->i_inode, be32_to_cpu(str->di_nlink));
	i_size_write(&ip->i_inode, be64_to_cpu(str->di_size));
	gfs2_set_inode_blocks(&ip->i_inode, be64_to_cpu(str->di_blocks));
+2 −2
Original line number Diff line number Diff line
@@ -456,8 +456,8 @@ static void init_dinode(struct gfs2_inode *dip, struct gfs2_inode *ip,
	di->di_num.no_formal_ino = cpu_to_be64(ip->i_no_formal_ino);
	di->di_num.no_addr = cpu_to_be64(ip->i_no_addr);
	di->di_mode = cpu_to_be32(ip->i_inode.i_mode);
	di->di_uid = cpu_to_be32(ip->i_inode.i_uid);
	di->di_gid = cpu_to_be32(ip->i_inode.i_gid);
	di->di_uid = cpu_to_be32(i_uid_read(&ip->i_inode));
	di->di_gid = cpu_to_be32(i_gid_read(&ip->i_inode));
	di->di_nlink = 0;
	di->di_size = cpu_to_be64(ip->i_inode.i_size);
	di->di_blocks = cpu_to_be64(1);
+2 −2
Original line number Diff line number Diff line
@@ -721,8 +721,8 @@ void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf)
	str->di_num.no_addr = cpu_to_be64(ip->i_no_addr);
	str->di_num.no_formal_ino = cpu_to_be64(ip->i_no_formal_ino);
	str->di_mode = cpu_to_be32(ip->i_inode.i_mode);
	str->di_uid = cpu_to_be32(ip->i_inode.i_uid);
	str->di_gid = cpu_to_be32(ip->i_inode.i_gid);
	str->di_uid = cpu_to_be32(i_uid_read(&ip->i_inode));
	str->di_gid = cpu_to_be32(i_gid_read(&ip->i_inode));
	str->di_nlink = cpu_to_be32(ip->i_inode.i_nlink);
	str->di_size = cpu_to_be64(i_size_read(&ip->i_inode));
	str->di_blocks = cpu_to_be64(gfs2_get_inode_blocks(&ip->i_inode));