diff options
Diffstat (limited to 'fs/xfs/xfs_buf_item.c')
-rw-r--r-- | fs/xfs/xfs_buf_item.c | 15 |
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 | /* |