From: Christoph Hellwig Date: Mon, 29 Jul 2024 21:56:56 +0000 (-0700) Subject: repair: stop preallocating blocks in mk_rbmino and mk_rsumino X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fxfs-rt-refactor;p=users%2Fhch%2Fxfsprogs.git repair: stop preallocating blocks in mk_rbmino and mk_rsumino Now that repair is using libxfs_rtfile_initialize_blocks to write to the rtbitmap and rtsummary inodes, space allocation is already taken care of that helper and there is no need to preallocate it. Remove the code to do so. Signed-off-by: Christoph Hellwig --- diff --git a/repair/phase6.c b/repair/phase6.c index 9c7cf98e4..de158a473 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -518,20 +518,11 @@ mk_rbmino( { struct xfs_trans *tp; struct xfs_inode *ip; - struct xfs_bmbt_irec *ep; - int i; - int nmap; int error; - xfs_fileoff_t bno; - struct xfs_bmbt_irec map[XFS_BMAP_MAX_NMAP]; - uint blocks; - /* - * first set up inode - */ - i = -libxfs_trans_alloc_rollable(mp, 10, &tp); - if (i) - res_failed(i); + error = -libxfs_trans_alloc_rollable(mp, 10, &tp); + if (error) + res_failed(error); /* Reset the realtime bitmap inode. */ error = ensure_rtino(tp, mp->m_sb.sb_rbmino, &ip); @@ -545,42 +536,6 @@ mk_rbmino( error = -libxfs_trans_commit(tp); if (error) do_error(_("%s: commit failed, error %d\n"), __func__, error); - - /* - * then allocate blocks for file and fill with zeroes (stolen - * from mkfs) - */ - blocks = mp->m_sb.sb_rbmblocks + - XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) - 1; - error = -libxfs_trans_alloc_rollable(mp, blocks, &tp); - if (error) - res_failed(error); - - libxfs_trans_ijoin(tp, ip, 0); - bno = 0; - while (bno < mp->m_sb.sb_rbmblocks) { - nmap = XFS_BMAP_MAX_NMAP; - error = -libxfs_bmapi_write(tp, ip, bno, - (xfs_extlen_t)(mp->m_sb.sb_rbmblocks - bno), - 0, mp->m_sb.sb_rbmblocks, map, &nmap); - if (error) { - do_error( - _("couldn't allocate realtime bitmap, error = %d\n"), - error); - } - for (i = 0, ep = map; i < nmap; i++, ep++) { - libxfs_device_zero(mp->m_ddev_targp, - XFS_FSB_TO_DADDR(mp, ep->br_startblock), - XFS_FSB_TO_BB(mp, ep->br_blockcount)); - bno += ep->br_blockcount; - } - } - error = -libxfs_trans_commit(tp); - if (error) { - do_error( - _("allocation of the realtime bitmap failed, error = %d\n"), - error); - } libxfs_irele(ip); } @@ -645,21 +600,11 @@ mk_rsumino( { struct xfs_trans *tp; struct xfs_inode *ip; - struct xfs_bmbt_irec *ep; - int i; - int nmap; int error; - int nsumblocks; - xfs_fileoff_t bno; - struct xfs_bmbt_irec map[XFS_BMAP_MAX_NMAP]; - uint blocks; - /* - * first set up inode - */ - i = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_ichange, 10, 0, 0, &tp); - if (i) - res_failed(i); + error = -libxfs_trans_alloc(mp, &M_RES(mp)->tr_ichange, 10, 0, 0, &tp); + if (error) + res_failed(error); /* Reset the rt summary inode. */ error = ensure_rtino(tp, mp->m_sb.sb_rsumino, &ip); @@ -673,42 +618,6 @@ mk_rsumino( error = -libxfs_trans_commit(tp); if (error) do_error(_("%s: commit failed, error %d\n"), __func__, error); - - /* - * then allocate blocks for file and fill with zeroes (stolen - * from mkfs) - */ - nsumblocks = mp->m_rsumsize >> mp->m_sb.sb_blocklog; - blocks = nsumblocks + XFS_BM_MAXLEVELS(mp, XFS_DATA_FORK) - 1; - error = -libxfs_trans_alloc_rollable(mp, blocks, &tp); - if (error) - res_failed(error); - - libxfs_trans_ijoin(tp, ip, 0); - bno = 0; - while (bno < nsumblocks) { - nmap = XFS_BMAP_MAX_NMAP; - error = -libxfs_bmapi_write(tp, ip, bno, - (xfs_extlen_t)(nsumblocks - bno), - 0, nsumblocks, map, &nmap); - if (error) { - do_error( - _("couldn't allocate realtime summary inode, error = %d\n"), - error); - } - for (i = 0, ep = map; i < nmap; i++, ep++) { - libxfs_device_zero(mp->m_ddev_targp, - XFS_FSB_TO_DADDR(mp, ep->br_startblock), - XFS_FSB_TO_BB(mp, ep->br_blockcount)); - bno += ep->br_blockcount; - } - } - error = -libxfs_trans_commit(tp); - if (error) { - do_error( - _("allocation of the realtime summary ino failed, error = %d\n"), - error); - } libxfs_irele(ip); }