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: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
Родитель
6b24c0d279
Коммит
d054642642
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
|
Загрузка…
Ссылка в новой задаче