diff options
Diffstat (limited to 'fs/xfs/xfs_buf.c')
-rw-r--r-- | fs/xfs/xfs_buf.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index d3a1974c91d5..854b27a8e776 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c | |||
@@ -196,7 +196,7 @@ xfs_buf_alloc( | |||
196 | sema_init(&bp->b_sema, 0); /* held, no waiters */ | 196 | sema_init(&bp->b_sema, 0); /* held, no waiters */ |
197 | XB_SET_OWNER(bp); | 197 | XB_SET_OWNER(bp); |
198 | bp->b_target = target; | 198 | bp->b_target = target; |
199 | bp->b_file_offset = blkno << BBSHIFT; | 199 | |
200 | /* | 200 | /* |
201 | * Set buffer_length and count_desired to the same value initially. | 201 | * Set buffer_length and count_desired to the same value initially. |
202 | * I/O routines should use count_desired, which will be the same in | 202 | * I/O routines should use count_desired, which will be the same in |
@@ -337,8 +337,8 @@ xfs_buf_allocate_memory( | |||
337 | } | 337 | } |
338 | 338 | ||
339 | use_alloc_page: | 339 | use_alloc_page: |
340 | end = bp->b_file_offset + bp->b_buffer_length; | 340 | end = BBTOB(bp->b_bn) + bp->b_buffer_length; |
341 | page_count = xfs_buf_btoc(end) - xfs_buf_btoct(bp->b_file_offset); | 341 | page_count = xfs_buf_btoc(end) - xfs_buf_btoct(BBTOB(bp->b_bn)); |
342 | error = _xfs_buf_get_pages(bp, page_count, flags); | 342 | error = _xfs_buf_get_pages(bp, page_count, flags); |
343 | if (unlikely(error)) | 343 | if (unlikely(error)) |
344 | return error; | 344 | return error; |
@@ -439,19 +439,17 @@ _xfs_buf_find( | |||
439 | xfs_buf_flags_t flags, | 439 | xfs_buf_flags_t flags, |
440 | xfs_buf_t *new_bp) | 440 | xfs_buf_t *new_bp) |
441 | { | 441 | { |
442 | xfs_off_t offset; | ||
443 | size_t numbytes; | 442 | size_t numbytes; |
444 | struct xfs_perag *pag; | 443 | struct xfs_perag *pag; |
445 | struct rb_node **rbp; | 444 | struct rb_node **rbp; |
446 | struct rb_node *parent; | 445 | struct rb_node *parent; |
447 | xfs_buf_t *bp; | 446 | xfs_buf_t *bp; |
448 | 447 | ||
449 | offset = BBTOB(blkno); | ||
450 | numbytes = BBTOB(numblks); | 448 | numbytes = BBTOB(numblks); |
451 | 449 | ||
452 | /* Check for IOs smaller than the sector size / not sector aligned */ | 450 | /* Check for IOs smaller than the sector size / not sector aligned */ |
453 | ASSERT(!(numbytes < (1 << btp->bt_sshift))); | 451 | ASSERT(!(numbytes < (1 << btp->bt_sshift))); |
454 | ASSERT(!(offset & (xfs_off_t)btp->bt_smask)); | 452 | ASSERT(!(BBTOB(blkno) & (xfs_off_t)btp->bt_smask)); |
455 | 453 | ||
456 | /* get tree root */ | 454 | /* get tree root */ |
457 | pag = xfs_perag_get(btp->bt_mount, | 455 | pag = xfs_perag_get(btp->bt_mount, |
@@ -466,13 +464,13 @@ _xfs_buf_find( | |||
466 | parent = *rbp; | 464 | parent = *rbp; |
467 | bp = rb_entry(parent, struct xfs_buf, b_rbnode); | 465 | bp = rb_entry(parent, struct xfs_buf, b_rbnode); |
468 | 466 | ||
469 | if (offset < bp->b_file_offset) | 467 | if (blkno < bp->b_bn) |
470 | rbp = &(*rbp)->rb_left; | 468 | rbp = &(*rbp)->rb_left; |
471 | else if (offset > bp->b_file_offset) | 469 | else if (blkno > bp->b_bn) |
472 | rbp = &(*rbp)->rb_right; | 470 | rbp = &(*rbp)->rb_right; |
473 | else { | 471 | else { |
474 | /* | 472 | /* |
475 | * found a block offset match. If the range doesn't | 473 | * found a block number match. If the range doesn't |
476 | * match, the only way this is allowed is if the buffer | 474 | * match, the only way this is allowed is if the buffer |
477 | * in the cache is stale and the transaction that made | 475 | * in the cache is stale and the transaction that made |
478 | * it stale has not yet committed. i.e. we are | 476 | * it stale has not yet committed. i.e. we are |
@@ -718,7 +716,6 @@ xfs_buf_set_empty( | |||
718 | bp->b_pages = NULL; | 716 | bp->b_pages = NULL; |
719 | bp->b_page_count = 0; | 717 | bp->b_page_count = 0; |
720 | bp->b_addr = NULL; | 718 | bp->b_addr = NULL; |
721 | bp->b_file_offset = 0; | ||
722 | bp->b_buffer_length = bp->b_count_desired = numblks << BBSHIFT; | 719 | bp->b_buffer_length = bp->b_count_desired = numblks << BBSHIFT; |
723 | bp->b_bn = XFS_BUF_DADDR_NULL; | 720 | bp->b_bn = XFS_BUF_DADDR_NULL; |
724 | bp->b_flags &= ~XBF_MAPPED; | 721 | bp->b_flags &= ~XBF_MAPPED; |