mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 08:40:53 +07:00
gfs2: eliminate rs_inum and reduce the size of gfs2 inodes
Before this patch, block reservations kept track of the inode number. At one point, that was a valid thing to do. However, since we made the reservation a part of the inode (rather than a pointer to a separate allocated object) the reservation can determine the inode number by using container_of. This saves us a little memory in our inode. Signed-off-by: Bob Peterson <rpeterso@redhat.com> Acked-by: Steven Whitehouse <swhiteho@redhat.com> Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
parent
f0dc7f9c6d
commit
f85c10e24a
@ -295,7 +295,6 @@ struct gfs2_blkreserv {
|
|||||||
struct rb_node rs_node; /* link to other block reservations */
|
struct rb_node rs_node; /* link to other block reservations */
|
||||||
struct gfs2_rbm rs_rbm; /* Start of reservation */
|
struct gfs2_rbm rs_rbm; /* Start of reservation */
|
||||||
u32 rs_free; /* how many blocks are still free */
|
u32 rs_free; /* how many blocks are still free */
|
||||||
u64 rs_inum; /* Inode number for reservation */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -607,8 +607,10 @@ int gfs2_rsqa_alloc(struct gfs2_inode *ip)
|
|||||||
|
|
||||||
static void dump_rs(struct seq_file *seq, const struct gfs2_blkreserv *rs)
|
static void dump_rs(struct seq_file *seq, const struct gfs2_blkreserv *rs)
|
||||||
{
|
{
|
||||||
|
struct gfs2_inode *ip = container_of(rs, struct gfs2_inode, i_res);
|
||||||
|
|
||||||
gfs2_print_dbg(seq, " B: n:%llu s:%llu b:%u f:%u\n",
|
gfs2_print_dbg(seq, " B: n:%llu s:%llu b:%u f:%u\n",
|
||||||
(unsigned long long)rs->rs_inum,
|
(unsigned long long)ip->i_no_addr,
|
||||||
(unsigned long long)gfs2_rbm_to_block(&rs->rs_rbm),
|
(unsigned long long)gfs2_rbm_to_block(&rs->rs_rbm),
|
||||||
rs->rs_rbm.offset, rs->rs_free);
|
rs->rs_rbm.offset, rs->rs_free);
|
||||||
}
|
}
|
||||||
@ -1528,7 +1530,6 @@ static void rg_mblk_search(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip,
|
|||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
rs->rs_rbm = rbm;
|
rs->rs_rbm = rbm;
|
||||||
rs->rs_free = extlen;
|
rs->rs_free = extlen;
|
||||||
rs->rs_inum = ip->i_no_addr;
|
|
||||||
rs_insert(ip);
|
rs_insert(ip);
|
||||||
} else {
|
} else {
|
||||||
if (goal == rgd->rd_last_alloc + rgd->rd_data0)
|
if (goal == rgd->rd_last_alloc + rgd->rd_data0)
|
||||||
|
@ -606,7 +606,8 @@ TRACE_EVENT(gfs2_rs,
|
|||||||
__entry->rd_addr = rs->rs_rbm.rgd->rd_addr;
|
__entry->rd_addr = rs->rs_rbm.rgd->rd_addr;
|
||||||
__entry->rd_free_clone = rs->rs_rbm.rgd->rd_free_clone;
|
__entry->rd_free_clone = rs->rs_rbm.rgd->rd_free_clone;
|
||||||
__entry->rd_reserved = rs->rs_rbm.rgd->rd_reserved;
|
__entry->rd_reserved = rs->rs_rbm.rgd->rd_reserved;
|
||||||
__entry->inum = rs->rs_inum;
|
__entry->inum = container_of(rs, struct gfs2_inode,
|
||||||
|
i_res)->i_no_addr;
|
||||||
__entry->start = gfs2_rbm_to_block(&rs->rs_rbm);
|
__entry->start = gfs2_rbm_to_block(&rs->rs_rbm);
|
||||||
__entry->free = rs->rs_free;
|
__entry->free = rs->rs_free;
|
||||||
__entry->func = func;
|
__entry->func = func;
|
||||||
|
Loading…
Reference in New Issue
Block a user