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()
655 xfs_buf_item_relse(bp); in xfs_buf_item_unlock()
660 xfs_buf_relse(bp); in xfs_buf_item_unlock()
755 xfs_buf_t *bp, in xfs_buf_item_init() argument
758 xfs_log_item_t *lip = bp->b_fspriv; in xfs_buf_item_init()
771 ASSERT(bp->b_target->bt_mount == mp); in xfs_buf_item_init()
777 bip->bli_buf = bp; in xfs_buf_item_init()
778 xfs_buf_hold(bp); in xfs_buf_item_init()
789 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()
907 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_log() local
916 end = start + BBTOB(bp->b_maps[i].bm_len); in xfs_buf_item_log()
918 start += BBTOB(bp->b_maps[i].bm_len); in xfs_buf_item_log()
929 start += bp->b_maps[i].bm_len; in xfs_buf_item_log()
962 xfs_buf_t *bp) in xfs_buf_item_relse() argument
964 xfs_buf_log_item_t *bip = bp->b_fspriv; in xfs_buf_item_relse()
966 trace_xfs_buf_item_relse(bp, _RET_IP_); in xfs_buf_item_relse()
969 bp->b_fspriv = bip->bli_item.li_bio_list; in xfs_buf_item_relse()
970 if (bp->b_fspriv == NULL) in xfs_buf_item_relse()
971 bp->b_iodone = NULL; in xfs_buf_item_relse()
973 xfs_buf_rele(bp); in xfs_buf_item_relse()
989 xfs_buf_t *bp, in xfs_buf_attach_iodone() argument
995 ASSERT(xfs_buf_islocked(bp)); in xfs_buf_attach_iodone()
998 head_lip = bp->b_fspriv; in xfs_buf_attach_iodone()
1003 bp->b_fspriv = lip; in xfs_buf_attach_iodone()
1006 ASSERT(bp->b_iodone == NULL || in xfs_buf_attach_iodone()
1007 bp->b_iodone == xfs_buf_iodone_callbacks); in xfs_buf_attach_iodone()
1008 bp->b_iodone = xfs_buf_iodone_callbacks; in xfs_buf_attach_iodone()
1025 struct xfs_buf *bp) in xfs_buf_do_callbacks() argument
1029 while ((lip = bp->b_fspriv) != NULL) { in xfs_buf_do_callbacks()
1030 bp->b_fspriv = lip->li_bio_list; in xfs_buf_do_callbacks()
1039 lip->li_cb(bp, lip); in xfs_buf_do_callbacks()
1052 struct xfs_buf *bp) in xfs_buf_iodone_callbacks() argument
1054 struct xfs_log_item *lip = bp->b_fspriv; in xfs_buf_iodone_callbacks()
1059 if (likely(!bp->b_error)) in xfs_buf_iodone_callbacks()
1067 xfs_buf_stale(bp); in xfs_buf_iodone_callbacks()
1068 XFS_BUF_DONE(bp); in xfs_buf_iodone_callbacks()
1069 trace_xfs_buf_item_iodone(bp, _RET_IP_); in xfs_buf_iodone_callbacks()
1073 if (bp->b_target != lasttarg || in xfs_buf_iodone_callbacks()
1076 xfs_buf_ioerror_alert(bp, __func__); in xfs_buf_iodone_callbacks()
1078 lasttarg = bp->b_target; in xfs_buf_iodone_callbacks()
1091 if (XFS_BUF_ISASYNC(bp)) { in xfs_buf_iodone_callbacks()
1092 ASSERT(bp->b_iodone != NULL); in xfs_buf_iodone_callbacks()
1094 trace_xfs_buf_item_iodone_async(bp, _RET_IP_); in xfs_buf_iodone_callbacks()
1096 xfs_buf_ioerror(bp, 0); /* errno of 0 unsets the flag */ in xfs_buf_iodone_callbacks()
1098 if (!(bp->b_flags & (XBF_STALE|XBF_WRITE_FAIL))) { in xfs_buf_iodone_callbacks()
1099 bp->b_flags |= XBF_WRITE | XBF_ASYNC | in xfs_buf_iodone_callbacks()
1101 xfs_buf_submit(bp); in xfs_buf_iodone_callbacks()
1103 xfs_buf_relse(bp); in xfs_buf_iodone_callbacks()
1113 xfs_buf_stale(bp); in xfs_buf_iodone_callbacks()
1114 XFS_BUF_DONE(bp); in xfs_buf_iodone_callbacks()
1116 trace_xfs_buf_error_relse(bp, _RET_IP_); in xfs_buf_iodone_callbacks()
1119 xfs_buf_do_callbacks(bp); in xfs_buf_iodone_callbacks()
1120 bp->b_fspriv = NULL; in xfs_buf_iodone_callbacks()
1121 bp->b_iodone = NULL; in xfs_buf_iodone_callbacks()
1122 xfs_buf_ioend(bp); in xfs_buf_iodone_callbacks()
1134 struct xfs_buf *bp, in xfs_buf_iodone() argument
1139 ASSERT(BUF_ITEM(lip)->bli_buf == bp); in xfs_buf_iodone()
1141 xfs_buf_rele(bp); in xfs_buf_iodone()