[GFS2] Shrink gfs2_inode (1) - di_header/di_num
The metadata header doesn't need to be stored in the incore struct gfs2_inode since its constant, and this patch removes it. Also, there is already a field for the inode's number in the struct gfs2_inode, so we don't need one in struct gfs2_dinode_host as well. This saves 28 bytes of space in the struct gfs2_inode. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
Родитель
4cc14f0b88
Коммит
af339c0241
|
@ -208,13 +208,18 @@ fail:
|
||||||
return ERR_PTR(error);
|
return ERR_PTR(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
|
static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
|
||||||
{
|
{
|
||||||
struct gfs2_dinode_host *di = &ip->i_di;
|
struct gfs2_dinode_host *di = &ip->i_di;
|
||||||
const struct gfs2_dinode *str = buf;
|
const struct gfs2_dinode *str = buf;
|
||||||
|
|
||||||
gfs2_meta_header_in(&di->di_header, buf);
|
if (ip->i_num.no_addr != be64_to_cpu(str->di_num.no_addr)) {
|
||||||
gfs2_inum_in(&di->di_num, &str->di_num);
|
if (gfs2_consist_inode(ip))
|
||||||
|
gfs2_dinode_print(ip);
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
if (ip->i_num.no_formal_ino != be64_to_cpu(str->di_num.no_formal_ino))
|
||||||
|
return -ESTALE;
|
||||||
|
|
||||||
di->di_mode = be32_to_cpu(str->di_mode);
|
di->di_mode = be32_to_cpu(str->di_mode);
|
||||||
di->di_uid = be32_to_cpu(str->di_uid);
|
di->di_uid = be32_to_cpu(str->di_uid);
|
||||||
|
@ -240,6 +245,7 @@ static void gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
|
||||||
di->di_entries = be32_to_cpu(str->di_entries);
|
di->di_entries = be32_to_cpu(str->di_entries);
|
||||||
|
|
||||||
di->di_eattr = be64_to_cpu(str->di_eattr);
|
di->di_eattr = be64_to_cpu(str->di_eattr);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -263,21 +269,12 @@ int gfs2_inode_refresh(struct gfs2_inode *ip)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
gfs2_dinode_in(ip, dibh->b_data);
|
error = gfs2_dinode_in(ip, dibh->b_data);
|
||||||
|
|
||||||
brelse(dibh);
|
brelse(dibh);
|
||||||
|
|
||||||
if (ip->i_num.no_addr != ip->i_di.di_num.no_addr) {
|
|
||||||
if (gfs2_consist_inode(ip))
|
|
||||||
gfs2_dinode_print(ip);
|
|
||||||
return -EIO;
|
|
||||||
}
|
|
||||||
if (ip->i_num.no_formal_ino != ip->i_di.di_num.no_formal_ino)
|
|
||||||
return -ESTALE;
|
|
||||||
|
|
||||||
ip->i_vn = ip->i_gl->gl_vn;
|
ip->i_vn = ip->i_gl->gl_vn;
|
||||||
|
|
||||||
return 0;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gfs2_dinode_dealloc(struct gfs2_inode *ip)
|
int gfs2_dinode_dealloc(struct gfs2_inode *ip)
|
||||||
|
|
|
@ -56,7 +56,7 @@ static void gfs2_inum_print(const struct gfs2_inum_host *no)
|
||||||
printk(KERN_INFO " no_addr = %llu\n", (unsigned long long)no->no_addr);
|
printk(KERN_INFO " no_addr = %llu\n", (unsigned long long)no->no_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfs2_meta_header_in(struct gfs2_meta_header_host *mh, const void *buf)
|
static void gfs2_meta_header_in(struct gfs2_meta_header_host *mh, const void *buf)
|
||||||
{
|
{
|
||||||
const struct gfs2_meta_header *str = buf;
|
const struct gfs2_meta_header *str = buf;
|
||||||
|
|
||||||
|
@ -74,13 +74,6 @@ static void gfs2_meta_header_out(const struct gfs2_meta_header_host *mh, void *b
|
||||||
str->mh_format = cpu_to_be32(mh->mh_format);
|
str->mh_format = cpu_to_be32(mh->mh_format);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gfs2_meta_header_print(const struct gfs2_meta_header_host *mh)
|
|
||||||
{
|
|
||||||
pv(mh, mh_magic, "0x%.8X");
|
|
||||||
pv(mh, mh_type, "%u");
|
|
||||||
pv(mh, mh_format, "%u");
|
|
||||||
}
|
|
||||||
|
|
||||||
void gfs2_sb_in(struct gfs2_sb_host *sb, const void *buf)
|
void gfs2_sb_in(struct gfs2_sb_host *sb, const void *buf)
|
||||||
{
|
{
|
||||||
const struct gfs2_sb *str = buf;
|
const struct gfs2_sb *str = buf;
|
||||||
|
@ -160,8 +153,13 @@ void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf)
|
||||||
const struct gfs2_dinode_host *di = &ip->i_di;
|
const struct gfs2_dinode_host *di = &ip->i_di;
|
||||||
struct gfs2_dinode *str = buf;
|
struct gfs2_dinode *str = buf;
|
||||||
|
|
||||||
gfs2_meta_header_out(&di->di_header, buf);
|
str->di_header.mh_magic = cpu_to_be32(GFS2_MAGIC);
|
||||||
gfs2_inum_out(&di->di_num, (char *)&str->di_num);
|
str->di_header.mh_type = cpu_to_be32(GFS2_METATYPE_DI);
|
||||||
|
str->di_header.__pad0 = 0;
|
||||||
|
str->di_header.mh_format = cpu_to_be32(GFS2_FORMAT_DI);
|
||||||
|
str->di_header.__pad1 = 0;
|
||||||
|
|
||||||
|
gfs2_inum_out(&ip->i_num, &str->di_num);
|
||||||
|
|
||||||
str->di_mode = cpu_to_be32(di->di_mode);
|
str->di_mode = cpu_to_be32(di->di_mode);
|
||||||
str->di_uid = cpu_to_be32(di->di_uid);
|
str->di_uid = cpu_to_be32(di->di_uid);
|
||||||
|
@ -187,15 +185,13 @@ void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf)
|
||||||
str->di_entries = cpu_to_be32(di->di_entries);
|
str->di_entries = cpu_to_be32(di->di_entries);
|
||||||
|
|
||||||
str->di_eattr = cpu_to_be64(di->di_eattr);
|
str->di_eattr = cpu_to_be64(di->di_eattr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gfs2_dinode_print(const struct gfs2_inode *ip)
|
void gfs2_dinode_print(const struct gfs2_inode *ip)
|
||||||
{
|
{
|
||||||
const struct gfs2_dinode_host *di = &ip->i_di;
|
const struct gfs2_dinode_host *di = &ip->i_di;
|
||||||
|
|
||||||
gfs2_meta_header_print(&di->di_header);
|
gfs2_inum_print(&ip->i_num);
|
||||||
gfs2_inum_print(&di->di_num);
|
|
||||||
|
|
||||||
pv(di, di_mode, "0%o");
|
pv(di, di_mode, "0%o");
|
||||||
pv(di, di_uid, "%u");
|
pv(di, di_uid, "%u");
|
||||||
|
|
|
@ -322,10 +322,6 @@ struct gfs2_dinode {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct gfs2_dinode_host {
|
struct gfs2_dinode_host {
|
||||||
struct gfs2_meta_header_host di_header;
|
|
||||||
|
|
||||||
struct gfs2_inum_host di_num;
|
|
||||||
|
|
||||||
__u32 di_mode; /* mode of file */
|
__u32 di_mode; /* mode of file */
|
||||||
__u32 di_uid; /* owner's user id */
|
__u32 di_uid; /* owner's user id */
|
||||||
__u32 di_gid; /* owner's group id */
|
__u32 di_gid; /* owner's group id */
|
||||||
|
@ -528,7 +524,6 @@ struct gfs2_quota_change_host {
|
||||||
|
|
||||||
extern void gfs2_inum_in(struct gfs2_inum_host *no, const void *buf);
|
extern void gfs2_inum_in(struct gfs2_inum_host *no, const void *buf);
|
||||||
extern void gfs2_inum_out(const struct gfs2_inum_host *no, void *buf);
|
extern void gfs2_inum_out(const struct gfs2_inum_host *no, void *buf);
|
||||||
extern void gfs2_meta_header_in(struct gfs2_meta_header_host *mh, const void *buf);
|
|
||||||
extern void gfs2_sb_in(struct gfs2_sb_host *sb, const void *buf);
|
extern void gfs2_sb_in(struct gfs2_sb_host *sb, const void *buf);
|
||||||
extern void gfs2_rindex_in(struct gfs2_rindex_host *ri, const void *buf);
|
extern void gfs2_rindex_in(struct gfs2_rindex_host *ri, const void *buf);
|
||||||
extern void gfs2_rindex_out(const struct gfs2_rindex_host *ri, void *buf);
|
extern void gfs2_rindex_out(const struct gfs2_rindex_host *ri, void *buf);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче