Lines Matching refs:bip

52 	struct xfs_buf_log_item		*bip,  in xfs_buf_item_size_segment()  argument
57 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_size_segment()
126 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_size() local
129 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_size()
130 if (bip->bli_flags & XFS_BLI_STALE) { in xfs_buf_item_size()
136 trace_xfs_buf_item_size_stale(bip); in xfs_buf_item_size()
137 ASSERT(bip->__bli_format.blf_flags & XFS_BLF_CANCEL); in xfs_buf_item_size()
138 *nvecs += bip->bli_format_count; in xfs_buf_item_size()
139 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_size()
140 *nbytes += xfs_buf_log_format_size(&bip->bli_formats[i]); in xfs_buf_item_size()
145 ASSERT(bip->bli_flags & XFS_BLI_LOGGED); in xfs_buf_item_size()
147 if (bip->bli_flags & XFS_BLI_ORDERED) { in xfs_buf_item_size()
153 trace_xfs_buf_item_size_ordered(bip); in xfs_buf_item_size()
167 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_size()
168 xfs_buf_item_size_segment(bip, &bip->bli_formats[i], in xfs_buf_item_size()
171 trace_xfs_buf_item_size(bip); in xfs_buf_item_size()
203 struct xfs_buf_log_item *bip, in xfs_buf_item_format_segment() argument
209 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_format_segment()
217 blfp->blf_flags = bip->__bli_format.blf_flags; in xfs_buf_item_format_segment()
227 if (!(bip->bli_flags & XFS_BLI_STALE) && first_bit == -1) { in xfs_buf_item_format_segment()
238 if (bip->bli_flags & XFS_BLI_STALE) { in xfs_buf_item_format_segment()
244 trace_xfs_buf_item_format_stale(bip); in xfs_buf_item_format_segment()
302 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_format() local
303 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_format()
308 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_format()
309 ASSERT((bip->bli_flags & XFS_BLI_LOGGED) || in xfs_buf_item_format()
310 (bip->bli_flags & XFS_BLI_STALE)); in xfs_buf_item_format()
311 ASSERT((bip->bli_flags & XFS_BLI_STALE) || in xfs_buf_item_format()
312 (xfs_blft_from_flags(&bip->__bli_format) > XFS_BLFT_UNKNOWN_BUF in xfs_buf_item_format()
313 && xfs_blft_from_flags(&bip->__bli_format) < XFS_BLFT_MAX_BUF)); in xfs_buf_item_format()
314 ASSERT(!(bip->bli_flags & XFS_BLI_ORDERED) || in xfs_buf_item_format()
315 (bip->bli_flags & XFS_BLI_STALE)); in xfs_buf_item_format()
332 if (bip->bli_flags & XFS_BLI_INODE_BUF) { in xfs_buf_item_format()
334 !((bip->bli_flags & XFS_BLI_INODE_ALLOC_BUF) && in xfs_buf_item_format()
336 bip->__bli_format.blf_flags |= XFS_BLF_INODE_BUF; in xfs_buf_item_format()
337 bip->bli_flags &= ~XFS_BLI_INODE_BUF; in xfs_buf_item_format()
340 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_format()
341 xfs_buf_item_format_segment(bip, lv, &vecp, offset, in xfs_buf_item_format()
342 &bip->bli_formats[i]); in xfs_buf_item_format()
349 trace_xfs_buf_item_format(bip); in xfs_buf_item_format()
365 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_pin() local
367 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_pin()
368 ASSERT((bip->bli_flags & XFS_BLI_LOGGED) || in xfs_buf_item_pin()
369 (bip->bli_flags & XFS_BLI_ORDERED) || in xfs_buf_item_pin()
370 (bip->bli_flags & XFS_BLI_STALE)); in xfs_buf_item_pin()
372 trace_xfs_buf_item_pin(bip); in xfs_buf_item_pin()
374 atomic_inc(&bip->bli_refcount); in xfs_buf_item_pin()
375 atomic_inc(&bip->bli_buf->b_pin_count); in xfs_buf_item_pin()
396 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_unpin() local
397 xfs_buf_t *bp = bip->bli_buf; in xfs_buf_item_unpin()
399 int stale = bip->bli_flags & XFS_BLI_STALE; in xfs_buf_item_unpin()
402 ASSERT(bp->b_log_item == bip); in xfs_buf_item_unpin()
403 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_unpin()
405 trace_xfs_buf_item_unpin(bip); in xfs_buf_item_unpin()
407 freed = atomic_dec_and_test(&bip->bli_refcount); in xfs_buf_item_unpin()
413 ASSERT(bip->bli_flags & XFS_BLI_STALE); in xfs_buf_item_unpin()
416 ASSERT(bip->__bli_format.blf_flags & XFS_BLF_CANCEL); in xfs_buf_item_unpin()
418 trace_xfs_buf_item_unpin_stale(bip); in xfs_buf_item_unpin()
445 if (bip->bli_flags & XFS_BLI_STALE_INODE) { in xfs_buf_item_unpin()
497 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_push() local
498 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_push()
516 ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); in xfs_buf_item_push()
518 trace_xfs_buf_item_push(bip); in xfs_buf_item_push()
543 struct xfs_buf_log_item *bip) in xfs_buf_item_put() argument
545 struct xfs_log_item *lip = &bip->bli_item; in xfs_buf_item_put()
550 if (!atomic_dec_and_test(&bip->bli_refcount)) in xfs_buf_item_put()
561 dirty = bip->bli_flags & XFS_BLI_DIRTY; in xfs_buf_item_put()
573 xfs_buf_item_relse(bip->bli_buf); in xfs_buf_item_put()
600 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_unlock() local
601 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_unlock()
603 bool hold = bip->bli_flags & XFS_BLI_HOLD; in xfs_buf_item_unlock()
604 bool stale = bip->bli_flags & XFS_BLI_STALE; in xfs_buf_item_unlock()
606 bool ordered = bip->bli_flags & XFS_BLI_ORDERED; in xfs_buf_item_unlock()
607 bool dirty = bip->bli_flags & XFS_BLI_DIRTY; in xfs_buf_item_unlock()
610 trace_xfs_buf_item_unlock(bip); in xfs_buf_item_unlock()
616 ASSERT((!ordered && dirty == xfs_buf_item_dirty_format(bip)) || in xfs_buf_item_unlock()
617 (ordered && dirty && !xfs_buf_item_dirty_format(bip))); in xfs_buf_item_unlock()
618 ASSERT(!stale || (bip->__bli_format.blf_flags & XFS_BLF_CANCEL)); in xfs_buf_item_unlock()
625 bip->bli_flags &= ~(XFS_BLI_LOGGED | XFS_BLI_HOLD | XFS_BLI_ORDERED); in xfs_buf_item_unlock()
633 released = xfs_buf_item_put(bip); in xfs_buf_item_unlock()
663 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_committed() local
665 trace_xfs_buf_item_committed(bip); in xfs_buf_item_committed()
667 if ((bip->bli_flags & XFS_BLI_INODE_ALLOC_BUF) && lip->li_lsn != 0) in xfs_buf_item_committed()
695 struct xfs_buf_log_item *bip, in xfs_buf_item_get_format() argument
698 ASSERT(bip->bli_formats == NULL); in xfs_buf_item_get_format()
699 bip->bli_format_count = count; in xfs_buf_item_get_format()
702 bip->bli_formats = &bip->__bli_format; in xfs_buf_item_get_format()
706 bip->bli_formats = kmem_zalloc(count * sizeof(struct xfs_buf_log_format), in xfs_buf_item_get_format()
708 if (!bip->bli_formats) in xfs_buf_item_get_format()
715 struct xfs_buf_log_item *bip) in xfs_buf_item_free_format() argument
717 if (bip->bli_formats != &bip->__bli_format) { in xfs_buf_item_free_format()
718 kmem_free(bip->bli_formats); in xfs_buf_item_free_format()
719 bip->bli_formats = NULL; in xfs_buf_item_free_format()
733 struct xfs_buf_log_item *bip = bp->b_log_item; in xfs_buf_item_init() local
745 if (bip) { in xfs_buf_item_init()
746 ASSERT(bip->bli_item.li_type == XFS_LI_BUF); in xfs_buf_item_init()
748 ASSERT(bip->bli_buf == bp); in xfs_buf_item_init()
752 bip = kmem_zone_zalloc(xfs_buf_item_zone, KM_SLEEP); in xfs_buf_item_init()
753 xfs_log_item_init(mp, &bip->bli_item, XFS_LI_BUF, &xfs_buf_item_ops); in xfs_buf_item_init()
754 bip->bli_buf = bp; in xfs_buf_item_init()
765 error = xfs_buf_item_get_format(bip, bp->b_map_count); in xfs_buf_item_init()
768 kmem_zone_free(xfs_buf_item_zone, bip); in xfs_buf_item_init()
773 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_init()
778 bip->bli_formats[i].blf_type = XFS_LI_BUF; in xfs_buf_item_init()
779 bip->bli_formats[i].blf_blkno = bp->b_maps[i].bm_bn; in xfs_buf_item_init()
780 bip->bli_formats[i].blf_len = bp->b_maps[i].bm_len; in xfs_buf_item_init()
781 bip->bli_formats[i].blf_map_size = map_size; in xfs_buf_item_init()
784 bp->b_log_item = bip; in xfs_buf_item_init()
877 struct xfs_buf_log_item *bip, in xfs_buf_item_log() argument
884 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_log()
890 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_log()
912 &bip->bli_formats[i].blf_data_map[0]); in xfs_buf_item_log()
925 struct xfs_buf_log_item *bip) in xfs_buf_item_dirty_format() argument
929 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_dirty_format()
930 if (!xfs_bitmap_empty(bip->bli_formats[i].blf_data_map, in xfs_buf_item_dirty_format()
931 bip->bli_formats[i].blf_map_size)) in xfs_buf_item_dirty_format()
940 struct xfs_buf_log_item *bip) in xfs_buf_item_free() argument
942 xfs_buf_item_free_format(bip); in xfs_buf_item_free()
943 kmem_free(bip->bli_item.li_lv_shadow); in xfs_buf_item_free()
944 kmem_zone_free(xfs_buf_item_zone, bip); in xfs_buf_item_free()
958 struct xfs_buf_log_item *bip = bp->b_log_item; in xfs_buf_item_relse() local
961 ASSERT(!(bip->bli_item.li_flags & XFS_LI_IN_AIL)); in xfs_buf_item_relse()
968 xfs_buf_item_free(bip); in xfs_buf_item_relse()
1073 struct xfs_buf_log_item *bip = bp->b_log_item; in xfs_buf_iodone_callback_error() local
1087 mp = lip ? lip->li_mountp : bip->bli_item.li_mountp; in xfs_buf_iodone_callback_error()