Lines Matching refs:bp
41 STATIC void xfs_buf_do_callbacks(struct xfs_buf *bp);
68 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_size_segment() local
102 } else if (xfs_buf_offset(bp, next_bit * XFS_BLF_CHUNK) != in xfs_buf_item_size_segment()
103 (xfs_buf_offset(bp, last_bit * XFS_BLF_CHUNK) + in xfs_buf_item_size_segment()
189 struct xfs_buf *bp, in xfs_buf_item_copy_iovec() argument
196 xfs_buf_offset(bp, offset), in xfs_buf_item_copy_iovec()
202 struct xfs_buf *bp, in xfs_buf_item_straddle() argument
207 return xfs_buf_offset(bp, offset + (next_bit << XFS_BLF_SHIFT)) != in xfs_buf_item_straddle()
208 (xfs_buf_offset(bp, offset + (last_bit << XFS_BLF_SHIFT)) + in xfs_buf_item_straddle()
220 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_format_segment() local
283 xfs_buf_item_copy_iovec(lv, vecp, bp, offset, in xfs_buf_item_format_segment()
288 xfs_buf_item_straddle(bp, offset, next_bit, last_bit)) { in xfs_buf_item_format_segment()
289 xfs_buf_item_copy_iovec(lv, vecp, bp, offset, in xfs_buf_item_format_segment()
314 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_format() local
362 offset += bp->b_maps[i].bm_len; in xfs_buf_item_format()
416 xfs_buf_t *bp = bip->bli_buf; in xfs_buf_item_unpin() local
421 ASSERT(bp->b_fspriv == bip); in xfs_buf_item_unpin()
428 if (atomic_dec_and_test(&bp->b_pin_count)) in xfs_buf_item_unpin()
429 wake_up_all(&bp->b_waiters); in xfs_buf_item_unpin()
433 ASSERT(xfs_buf_islocked(bp)); in xfs_buf_item_unpin()
434 ASSERT(XFS_BUF_ISSTALE(bp)); in xfs_buf_item_unpin()
455 bp->b_transp = NULL; in xfs_buf_item_unpin()
465 xfs_buf_do_callbacks(bp); in xfs_buf_item_unpin()
466 bp->b_fspriv = NULL; in xfs_buf_item_unpin()
467 bp->b_iodone = NULL; in xfs_buf_item_unpin()
471 xfs_buf_item_relse(bp); in xfs_buf_item_unpin()
472 ASSERT(bp->b_fspriv == NULL); in xfs_buf_item_unpin()
474 xfs_buf_relse(bp); in xfs_buf_item_unpin()
492 xfs_buf_lock(bp); in xfs_buf_item_unpin()
493 xfs_buf_hold(bp); in xfs_buf_item_unpin()
494 bp->b_flags |= XBF_ASYNC; in xfs_buf_item_unpin()
495 xfs_buf_ioerror(bp, -EIO); in xfs_buf_item_unpin()
496 XFS_BUF_UNDONE(bp); in xfs_buf_item_unpin()
497 xfs_buf_stale(bp); in xfs_buf_item_unpin()
498 xfs_buf_ioend(bp); in xfs_buf_item_unpin()
516 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_push() local
519 if (xfs_buf_ispinned(bp)) in xfs_buf_item_push()
521 if (!xfs_buf_trylock(bp)) { in xfs_buf_item_push()
529 if (xfs_buf_ispinned(bp)) in xfs_buf_item_push()
539 if ((bp->b_flags & XBF_WRITE_FAIL) && in xfs_buf_item_push()
541 xfs_warn(bp->b_target->bt_mount, in xfs_buf_item_push()
543 (long long)bp->b_bn); in xfs_buf_item_push()
546 if (!xfs_buf_delwri_queue(bp, buffer_list)) in xfs_buf_item_push()
548 xfs_buf_unlock(bp); in xfs_buf_item_push()
576 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_unlock() local
582 bp->b_transp = NULL; in xfs_buf_item_unlock()
647 xfs_buf_item_relse(bp); in xfs_buf_item_unlock()
651 xfs_buf_item_relse(bp); in xfs_buf_item_unlock()
656 xfs_buf_relse(bp); in xfs_buf_item_unlock()
751 struct xfs_buf *bp, in xfs_buf_item_init() argument
754 struct xfs_log_item *lip = bp->b_fspriv; in xfs_buf_item_init()
767 ASSERT(bp->b_target->bt_mount == mp); in xfs_buf_item_init()
773 bip->bli_buf = bp; in xfs_buf_item_init()
784 error = xfs_buf_item_get_format(bip, bp->b_map_count); in xfs_buf_item_init()
793 chunks = DIV_ROUND_UP(BBTOB(bp->b_maps[i].bm_len), in xfs_buf_item_init()
798 bip->bli_formats[i].blf_blkno = bp->b_maps[i].bm_bn; in xfs_buf_item_init()
799 bip->bli_formats[i].blf_len = bp->b_maps[i].bm_len; in xfs_buf_item_init()
807 if (bp->b_fspriv) in xfs_buf_item_init()
808 bip->bli_item.li_bio_list = bp->b_fspriv; in xfs_buf_item_init()
809 bp->b_fspriv = bip; in xfs_buf_item_init()
810 xfs_buf_hold(bp); in xfs_buf_item_init()
909 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_log() local
918 end = start + BBTOB(bp->b_maps[i].bm_len); in xfs_buf_item_log()
920 start += BBTOB(bp->b_maps[i].bm_len); in xfs_buf_item_log()
931 start += bp->b_maps[i].bm_len; in xfs_buf_item_log()
964 xfs_buf_t *bp) in xfs_buf_item_relse() argument
966 xfs_buf_log_item_t *bip = bp->b_fspriv; in xfs_buf_item_relse()
968 trace_xfs_buf_item_relse(bp, _RET_IP_); in xfs_buf_item_relse()
971 bp->b_fspriv = bip->bli_item.li_bio_list; in xfs_buf_item_relse()
972 if (bp->b_fspriv == NULL) in xfs_buf_item_relse()
973 bp->b_iodone = NULL; in xfs_buf_item_relse()
975 xfs_buf_rele(bp); in xfs_buf_item_relse()
991 xfs_buf_t *bp, in xfs_buf_attach_iodone() argument
997 ASSERT(xfs_buf_islocked(bp)); in xfs_buf_attach_iodone()
1000 head_lip = bp->b_fspriv; in xfs_buf_attach_iodone()
1005 bp->b_fspriv = lip; in xfs_buf_attach_iodone()
1008 ASSERT(bp->b_iodone == NULL || in xfs_buf_attach_iodone()
1009 bp->b_iodone == xfs_buf_iodone_callbacks); in xfs_buf_attach_iodone()
1010 bp->b_iodone = xfs_buf_iodone_callbacks; in xfs_buf_attach_iodone()
1027 struct xfs_buf *bp) in xfs_buf_do_callbacks() argument
1031 while ((lip = bp->b_fspriv) != NULL) { in xfs_buf_do_callbacks()
1032 bp->b_fspriv = lip->li_bio_list; in xfs_buf_do_callbacks()
1041 lip->li_cb(bp, lip); in xfs_buf_do_callbacks()
1054 struct xfs_buf *bp) in xfs_buf_iodone_callbacks() argument
1056 struct xfs_log_item *lip = bp->b_fspriv; in xfs_buf_iodone_callbacks()
1061 if (likely(!bp->b_error)) in xfs_buf_iodone_callbacks()
1069 xfs_buf_stale(bp); in xfs_buf_iodone_callbacks()
1070 XFS_BUF_DONE(bp); in xfs_buf_iodone_callbacks()
1071 trace_xfs_buf_item_iodone(bp, _RET_IP_); in xfs_buf_iodone_callbacks()
1075 if (bp->b_target != lasttarg || in xfs_buf_iodone_callbacks()
1078 xfs_buf_ioerror_alert(bp, __func__); in xfs_buf_iodone_callbacks()
1080 lasttarg = bp->b_target; in xfs_buf_iodone_callbacks()
1093 if (XFS_BUF_ISASYNC(bp)) { in xfs_buf_iodone_callbacks()
1094 ASSERT(bp->b_iodone != NULL); in xfs_buf_iodone_callbacks()
1096 trace_xfs_buf_item_iodone_async(bp, _RET_IP_); in xfs_buf_iodone_callbacks()
1098 xfs_buf_ioerror(bp, 0); /* errno of 0 unsets the flag */ in xfs_buf_iodone_callbacks()
1100 if (!(bp->b_flags & (XBF_STALE|XBF_WRITE_FAIL))) { in xfs_buf_iodone_callbacks()
1101 bp->b_flags |= XBF_WRITE | XBF_ASYNC | in xfs_buf_iodone_callbacks()
1103 xfs_buf_submit(bp); in xfs_buf_iodone_callbacks()
1105 xfs_buf_relse(bp); in xfs_buf_iodone_callbacks()
1115 xfs_buf_stale(bp); in xfs_buf_iodone_callbacks()
1116 XFS_BUF_DONE(bp); in xfs_buf_iodone_callbacks()
1118 trace_xfs_buf_error_relse(bp, _RET_IP_); in xfs_buf_iodone_callbacks()
1121 xfs_buf_do_callbacks(bp); in xfs_buf_iodone_callbacks()
1122 bp->b_fspriv = NULL; in xfs_buf_iodone_callbacks()
1123 bp->b_iodone = NULL; in xfs_buf_iodone_callbacks()
1124 xfs_buf_ioend(bp); in xfs_buf_iodone_callbacks()
1136 struct xfs_buf *bp, in xfs_buf_iodone() argument
1141 ASSERT(BUF_ITEM(lip)->bli_buf == bp); in xfs_buf_iodone()
1143 xfs_buf_rele(bp); in xfs_buf_iodone()