|
@@ -667,14 +667,13 @@ xfs_bmap_extents_to_btree(
|
|
|
xfs_bmbt_rec_t *arp; /* child record pointer */
|
|
|
struct xfs_btree_block *block; /* btree root block */
|
|
|
xfs_btree_cur_t *cur; /* bmap btree cursor */
|
|
|
- xfs_bmbt_rec_host_t *ep; /* extent record pointer */
|
|
|
int error; /* error return value */
|
|
|
- xfs_extnum_t i, cnt; /* extent record index */
|
|
|
xfs_ifork_t *ifp; /* inode fork pointer */
|
|
|
xfs_bmbt_key_t *kp; /* root block key pointer */
|
|
|
xfs_mount_t *mp; /* mount structure */
|
|
|
- xfs_extnum_t nextents; /* number of file extents */
|
|
|
xfs_bmbt_ptr_t *pp; /* root block address pointer */
|
|
|
+ struct xfs_bmbt_irec rec;
|
|
|
+ xfs_extnum_t i = 0, cnt = 0;
|
|
|
|
|
|
mp = ip->i_mount;
|
|
|
ASSERT(whichfork != XFS_COW_FORK);
|
|
@@ -753,15 +752,12 @@ xfs_bmap_extents_to_btree(
|
|
|
XFS_BTNUM_BMAP, 0, 0, ip->i_ino,
|
|
|
XFS_BTREE_LONG_PTRS);
|
|
|
|
|
|
- arp = XFS_BMBT_REC_ADDR(mp, ablock, 1);
|
|
|
- nextents = xfs_iext_count(ifp);
|
|
|
- for (cnt = i = 0; i < nextents; i++) {
|
|
|
- ep = xfs_iext_get_ext(ifp, i);
|
|
|
- if (!isnullstartblock(xfs_bmbt_get_startblock(ep))) {
|
|
|
- arp->l0 = cpu_to_be64(ep->l0);
|
|
|
- arp->l1 = cpu_to_be64(ep->l1);
|
|
|
- arp++; cnt++;
|
|
|
- }
|
|
|
+ while (xfs_iext_get_extent(ifp, i++, &rec)) {
|
|
|
+ if (isnullstartblock(rec.br_startblock))
|
|
|
+ continue;
|
|
|
+ arp = XFS_BMBT_REC_ADDR(mp, ablock, 1 + cnt);
|
|
|
+ xfs_bmbt_disk_set_all(arp, &rec);
|
|
|
+ cnt++;
|
|
|
}
|
|
|
ASSERT(cnt == XFS_IFORK_NEXTENTS(ip, whichfork));
|
|
|
xfs_btree_set_numrecs(ablock, cnt);
|