From: Darrick J. Wong <djwong@xxxxxxxxxx> Convert all open-coded sb metadata inode pointer logging to use libxfs_imeta_create to create metadata inodes. Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> --- mkfs/proto.c | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/mkfs/proto.c b/mkfs/proto.c index a519aaeb72b..8ae0aba777c 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -752,8 +752,7 @@ static void rtinit( struct xfs_mount *mp) { - struct cred creds; - struct fsxattr fsxattrs; + struct xfs_imeta_update upd; struct xfs_bmbt_irec map[XFS_BMAP_MAX_NMAP]; struct xfs_inode *rbmip; struct xfs_inode *rsumip; @@ -767,41 +766,38 @@ rtinit( int error; /* Create the realtime bitmap inode. */ - error = -libxfs_trans_alloc_rollable(mp, MKFS_BLOCKRES_INODE, &tp); + error = -libxfs_imeta_start_create(mp, &XFS_IMETA_RTBITMAP, &upd); if (error) res_failed(error); - memset(&creds, 0, sizeof(creds)); - memset(&fsxattrs, 0, sizeof(fsxattrs)); - error = creatproto(&tp, NULL, S_IFREG, 1, 0, &creds, &fsxattrs, - &rbmip); - if (error) { + error = -libxfs_imeta_create(&upd, S_IFREG, &rbmip); + if (error) fail(_("Realtime bitmap inode allocation failed"), error); - } - /* - * Do our thing with rbmip before allocating rsumip, - * because the next call to createproto may - * commit the transaction in which rbmip was allocated. - */ - mp->m_sb.sb_rbmino = rbmip->i_ino; + rbmip->i_disk_size = mp->m_sb.sb_rbmblocks * mp->m_sb.sb_blocksize; - rbmip->i_diflags = XFS_DIFLAG_NEWRTBM; + rbmip->i_diflags |= XFS_DIFLAG_NEWRTBM; inode_set_atime(VFS_I(rbmip), 0, 0); libxfs_trans_log_inode(tp, rbmip, XFS_ILOG_CORE); - libxfs_log_sb(tp); + + error = -libxfs_imeta_commit_update(&upd); + if (error) + fail(_("Completion of the realtime bitmap inode failed"), + error); mp->m_rbmip = rbmip; /* Create the realtime summary inode. */ - error = creatproto(&tp, NULL, S_IFREG, 1, 0, &creds, &fsxattrs, - &rsumip); - if (error) { + error = -libxfs_imeta_start_create(mp, &XFS_IMETA_RTSUMMARY, &upd); + if (error) + res_failed(error); + + error = -libxfs_imeta_create(&upd, S_IFREG, &rsumip); + if (error) fail(_("Realtime summary inode allocation failed"), error); - } - mp->m_sb.sb_rsumino = rsumip->i_ino; + rsumip->i_disk_size = mp->m_rsumsize; libxfs_trans_log_inode(tp, rsumip, XFS_ILOG_CORE); - libxfs_log_sb(tp); - error = -libxfs_trans_commit(tp); + + error = -libxfs_imeta_commit_update(&upd); if (error) fail(_("Completion of the realtime summary inode failed"), error);