aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_buf_item.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_buf_item.c')
-rw-r--r--fs/xfs/xfs_buf_item.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
index 7f0abeaf919c..a25206c84cf9 100644
--- a/fs/xfs/xfs_buf_item.c
+++ b/fs/xfs/xfs_buf_item.c
@@ -123,11 +123,11 @@ xfs_buf_item_log_check(
123 ASSERT(bip->bli_logged != NULL); 123 ASSERT(bip->bli_logged != NULL);
124 124
125 bp = bip->bli_buf; 125 bp = bip->bli_buf;
126 ASSERT(XFS_BUF_COUNT(bp) > 0); 126 ASSERT(bp->b_length > 0);
127 ASSERT(bp->b_addr != NULL); 127 ASSERT(bp->b_addr != NULL);
128 orig = bip->bli_orig; 128 orig = bip->bli_orig;
129 buffer = bp->b_addr; 129 buffer = bp->b_addr;
130 for (x = 0; x < XFS_BUF_COUNT(bp); x++) { 130 for (x = 0; x < BBTOB(bp->b_length); x++) {
131 if (orig[x] != buffer[x] && !btst(bip->bli_logged, x)) { 131 if (orig[x] != buffer[x] && !btst(bip->bli_logged, x)) {
132 xfs_emerg(bp->b_mount, 132 xfs_emerg(bp->b_mount,
133 "%s: bip %x buffer %x orig %x index %d", 133 "%s: bip %x buffer %x orig %x index %d",
@@ -657,7 +657,8 @@ xfs_buf_item_init(
657 * truncate any pieces. map_size is the size of the 657 * truncate any pieces. map_size is the size of the
658 * bitmap needed to describe the chunks of the buffer. 658 * bitmap needed to describe the chunks of the buffer.
659 */ 659 */
660 chunks = (int)((XFS_BUF_COUNT(bp) + (XFS_BLF_CHUNK - 1)) >> XFS_BLF_SHIFT); 660 chunks = (int)((BBTOB(bp->b_length) + (XFS_BLF_CHUNK - 1)) >>
661 XFS_BLF_SHIFT);
661 map_size = (int)((chunks + NBWORD) >> BIT_TO_WORD_SHIFT); 662 map_size = (int)((chunks + NBWORD) >> BIT_TO_WORD_SHIFT);
662 663
663 bip = (xfs_buf_log_item_t*)kmem_zone_zalloc(xfs_buf_item_zone, 664 bip = (xfs_buf_log_item_t*)kmem_zone_zalloc(xfs_buf_item_zone,
@@ -667,7 +668,7 @@ xfs_buf_item_init(
667 xfs_buf_hold(bp); 668 xfs_buf_hold(bp);
668 bip->bli_format.blf_type = XFS_LI_BUF; 669 bip->bli_format.blf_type = XFS_LI_BUF;
669 bip->bli_format.blf_blkno = (__int64_t)XFS_BUF_ADDR(bp); 670 bip->bli_format.blf_blkno = (__int64_t)XFS_BUF_ADDR(bp);
670 bip->bli_format.blf_len = (ushort)BTOBB(XFS_BUF_COUNT(bp)); 671 bip->bli_format.blf_len = (ushort)bp->b_length;
671 bip->bli_format.blf_map_size = map_size; 672 bip->bli_format.blf_map_size = map_size;
672 673
673#ifdef XFS_TRANS_DEBUG 674#ifdef XFS_TRANS_DEBUG
@@ -679,9 +680,9 @@ xfs_buf_item_init(
679 * the buffer to indicate which bytes the callers have asked 680 * the buffer to indicate which bytes the callers have asked
680 * to have logged. 681 * to have logged.
681 */ 682 */
682 bip->bli_orig = (char *)kmem_alloc(XFS_BUF_COUNT(bp), KM_SLEEP); 683 bip->bli_orig = kmem_alloc(BBTOB(bp->b_length), KM_SLEEP);
683 memcpy(bip->bli_orig, bp->b_addr, XFS_BUF_COUNT(bp)); 684 memcpy(bip->bli_orig, bp->b_addr, BBTOB(bp->b_length));
684 bip->bli_logged = (char *)kmem_zalloc(XFS_BUF_COUNT(bp) / NBBY, KM_SLEEP); 685 bip->bli_logged = kmem_zalloc(BBTOB(bp->b_length) / NBBY, KM_SLEEP);
685#endif 686#endif
686 687
687 /* 688 /*