@@ -3624,7 +3624,7 @@ process_rtbitmap(
int t;
xfs_rtword_t *words;
- bitsperblock = mp->m_sb.sb_blocksize * NBBY;
+ bitsperblock = mp->m_blockwsize << XFS_NBWORDLOG;
words = malloc(mp->m_blockwsize << XFS_WORDLOG);
if (!words) {
dbprintf(_("could not allocate rtwords buffer\n"));
@@ -3738,7 +3738,7 @@ process_rtsummary(
}
ondisk = xfs_rsumblock_infoptr(iocur_top->bp, 0);
- memcpy(sfile, ondisk, mp->m_sb.sb_blocksize);
+ memcpy(sfile, ondisk, mp->m_blockwsize << XFS_WORDLOG);
pop_cur();
sfile += mp->m_blockwsize;
}
@@ -828,7 +828,8 @@ _("can't access block %" PRIu64 " (fsbno %" PRIu64 ") of realtime bitmap inode %
return(1);
}
- memcpy(xfs_rbmblock_wordptr(bp, 0), bmp, mp->m_sb.sb_blocksize);
+ memcpy(xfs_rbmblock_wordptr(bp, 0), bmp,
+ mp->m_blockwsize << XFS_WORDLOG);
libxfs_trans_log_buf(tp, bp, 0, mp->m_sb.sb_blocksize - 1);
@@ -899,7 +900,8 @@ _("can't access block %" PRIu64 " (fsbno %" PRIu64 ") of realtime summary inode
return(1);
}
- memcpy(xfs_rsumblock_infoptr(bp, 0), smp, mp->m_sb.sb_blocksize);
+ memcpy(xfs_rsumblock_infoptr(bp, 0), smp,
+ mp->m_blockwsize << XFS_WORDLOG);
libxfs_trans_log_buf(tp, bp, 0, mp->m_sb.sb_blocksize - 1);
@@ -25,8 +25,9 @@ rtinit(xfs_mount_t *mp)
return;
/*
- * realtime init -- blockmap initialization is
- * handled by incore_init()
+ * Allocate buffers for formatting the collected rt free space
+ * information. The rtbitmap buffer must be large enough to compare
+ * against any unused bytes in the last block of the file.
*/
wordcnt = libxfs_rtbitmap_wordcount(mp, mp->m_sb.sb_rextents);
btmcompute = calloc(wordcnt, sizeof(union xfs_rtword_ondisk));
@@ -67,7 +68,7 @@ generate_rtinfo(
ASSERT(mp->m_rbmip == NULL);
- bitsperblock = mp->m_sb.sb_blocksize * NBBY;
+ bitsperblock = mp->m_blockwsize << XFS_NBWORDLOG;
extno = start_ext = 0;
bmbno = in_extent = start_bmbno = 0;
@@ -179,7 +180,7 @@ check_rtfile_contents(
break;
}
- if (memcmp(bp->b_addr, buf, mp->m_sb.sb_blocksize))
+ if (memcmp(bp->b_addr, buf, mp->m_blockwsize << XFS_WORDLOG))
do_warn(_("discrepancy in %s at dblock 0x%llx\n"),
filename, (unsigned long long)bno);