@@ -3630,7 +3630,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"));
@@ -3749,7 +3749,7 @@ process_rtsummary(
args.sumbp = iocur_top->bp;
ondisk = xfs_rsumblock_infoptr(&args, 0);
- memcpy(sfile, ondisk, mp->m_sb.sb_blocksize);
+ memcpy(sfile, ondisk, mp->m_blockwsize << XFS_WORDLOG);
pop_cur();
sfile += mp->m_blockwsize;
}
@@ -626,7 +626,7 @@ _("can't access block %" PRIu64 " (fsbno %" PRIu64 ") of realtime bitmap inode %
args.rbmbp = bp;
ondisk = xfs_rbmblock_wordptr(&args, 0);
- memcpy(ondisk, bmp, mp->m_sb.sb_blocksize);
+ memcpy(ondisk, bmp, mp->m_blockwsize << XFS_WORDLOG);
libxfs_trans_log_buf(tp, bp, 0, mp->m_sb.sb_blocksize - 1);
@@ -705,7 +705,7 @@ _("can't access block %" PRIu64 " (fsbno %" PRIu64 ") of realtime summary inode
args.sumbp = bp;
ondisk = xfs_rsumblock_infoptr(&args, 0);
- memcpy(ondisk, smp, mp->m_sb.sb_blocksize);
+ memcpy(ondisk, 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_raw));
@@ -87,7 +88,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;
@@ -199,7 +200,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);