gfs2: Turn gfs2_meta_indirect_buffer into gfs2_meta_buffer

Instead of only supporting GFS2_METATYPE_DI and GFS2_METATYPE_IN blocks,
make the block type a parameter of gfs2_meta_indirect_buffer and rename
the function to gfs2_meta_buffer.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
Andreas Gruenbacher 2021-03-25 18:48:49 +01:00
parent 152f58c9af
commit 6d8da302ae
3 changed files with 8 additions and 9 deletions

View File

@ -331,7 +331,7 @@ static int __fillup_metapath(struct gfs2_inode *ip, struct metapath *mp,
if (!dblock) if (!dblock)
break; break;
ret = gfs2_meta_indirect_buffer(ip, x + 1, dblock, &mp->mp_bh[x + 1]); ret = gfs2_meta_buffer(ip, GFS2_METATYPE_IN, dblock, &mp->mp_bh[x + 1]);
if (ret) if (ret)
return ret; return ret;
} }

View File

@ -466,23 +466,22 @@ void gfs2_journal_wipe(struct gfs2_inode *ip, u64 bstart, u32 blen)
} }
/** /**
* gfs2_meta_indirect_buffer - Get a metadata buffer * gfs2_meta_buffer - Get a metadata buffer
* @ip: The GFS2 inode * @ip: The GFS2 inode
* @height: The level of this buf in the metadata (indir addr) tree (if any) * @mtype: The block type (GFS2_METATYPE_*)
* @num: The block number (device relative) of the buffer * @num: The block number (device relative) of the buffer
* @bhp: the buffer is returned here * @bhp: the buffer is returned here
* *
* Returns: errno * Returns: errno
*/ */
int gfs2_meta_indirect_buffer(struct gfs2_inode *ip, int height, u64 num, int gfs2_meta_buffer(struct gfs2_inode *ip, u32 mtype, u64 num,
struct buffer_head **bhp) struct buffer_head **bhp)
{ {
struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
struct gfs2_glock *gl = ip->i_gl; struct gfs2_glock *gl = ip->i_gl;
struct buffer_head *bh; struct buffer_head *bh;
int ret = 0; int ret = 0;
u32 mtype = height ? GFS2_METATYPE_IN : GFS2_METATYPE_DI;
int rahead = 0; int rahead = 0;
if (num == ip->i_no_addr) if (num == ip->i_no_addr)

View File

@ -61,13 +61,13 @@ enum {
extern void gfs2_remove_from_journal(struct buffer_head *bh, int meta); extern void gfs2_remove_from_journal(struct buffer_head *bh, int meta);
extern void gfs2_journal_wipe(struct gfs2_inode *ip, u64 bstart, u32 blen); extern void gfs2_journal_wipe(struct gfs2_inode *ip, u64 bstart, u32 blen);
extern int gfs2_meta_indirect_buffer(struct gfs2_inode *ip, int height, u64 num, extern int gfs2_meta_buffer(struct gfs2_inode *ip, u32 mtype, u64 num,
struct buffer_head **bhp); struct buffer_head **bhp);
static inline int gfs2_meta_inode_buffer(struct gfs2_inode *ip, static inline int gfs2_meta_inode_buffer(struct gfs2_inode *ip,
struct buffer_head **bhp) struct buffer_head **bhp)
{ {
return gfs2_meta_indirect_buffer(ip, 0, ip->i_no_addr, bhp); return gfs2_meta_buffer(ip, GFS2_METATYPE_DI, ip->i_no_addr, bhp);
} }
struct buffer_head *gfs2_meta_ra(struct gfs2_glock *gl, u64 dblock, u32 extlen); struct buffer_head *gfs2_meta_ra(struct gfs2_glock *gl, u64 dblock, u32 extlen);