Lines Matching refs:bip

63 	struct xfs_buf_log_item	*bip,  in xfs_buf_item_size_segment()  argument
68 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_size_segment()
137 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_size() local
140 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_size()
141 if (bip->bli_flags & XFS_BLI_STALE) { in xfs_buf_item_size()
147 trace_xfs_buf_item_size_stale(bip); in xfs_buf_item_size()
148 ASSERT(bip->__bli_format.blf_flags & XFS_BLF_CANCEL); in xfs_buf_item_size()
149 *nvecs += bip->bli_format_count; in xfs_buf_item_size()
150 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_size()
151 *nbytes += xfs_buf_log_format_size(&bip->bli_formats[i]); in xfs_buf_item_size()
156 ASSERT(bip->bli_flags & XFS_BLI_LOGGED); in xfs_buf_item_size()
158 if (bip->bli_flags & XFS_BLI_ORDERED) { in xfs_buf_item_size()
164 trace_xfs_buf_item_size_ordered(bip); in xfs_buf_item_size()
178 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_size()
179 xfs_buf_item_size_segment(bip, &bip->bli_formats[i], in xfs_buf_item_size()
182 trace_xfs_buf_item_size(bip); in xfs_buf_item_size()
214 struct xfs_buf_log_item *bip, in xfs_buf_item_format_segment() argument
220 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_format_segment()
228 blfp->blf_flags = bip->__bli_format.blf_flags; in xfs_buf_item_format_segment()
238 if (!(bip->bli_flags & XFS_BLI_STALE) && first_bit == -1) { in xfs_buf_item_format_segment()
249 if (bip->bli_flags & XFS_BLI_STALE) { in xfs_buf_item_format_segment()
255 trace_xfs_buf_item_format_stale(bip); in xfs_buf_item_format_segment()
313 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_format() local
314 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_format()
319 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_format()
320 ASSERT((bip->bli_flags & XFS_BLI_LOGGED) || in xfs_buf_item_format()
321 (bip->bli_flags & XFS_BLI_STALE)); in xfs_buf_item_format()
322 ASSERT((bip->bli_flags & XFS_BLI_STALE) || in xfs_buf_item_format()
323 (xfs_blft_from_flags(&bip->__bli_format) > XFS_BLFT_UNKNOWN_BUF in xfs_buf_item_format()
324 && xfs_blft_from_flags(&bip->__bli_format) < XFS_BLFT_MAX_BUF)); in xfs_buf_item_format()
341 if (bip->bli_flags & XFS_BLI_INODE_BUF) { in xfs_buf_item_format()
343 !((bip->bli_flags & XFS_BLI_INODE_ALLOC_BUF) && in xfs_buf_item_format()
345 bip->__bli_format.blf_flags |= XFS_BLF_INODE_BUF; in xfs_buf_item_format()
346 bip->bli_flags &= ~XFS_BLI_INODE_BUF; in xfs_buf_item_format()
349 if ((bip->bli_flags & (XFS_BLI_ORDERED|XFS_BLI_STALE)) == in xfs_buf_item_format()
355 trace_xfs_buf_item_format_ordered(bip); in xfs_buf_item_format()
359 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_format()
360 xfs_buf_item_format_segment(bip, lv, &vecp, offset, in xfs_buf_item_format()
361 &bip->bli_formats[i]); in xfs_buf_item_format()
368 trace_xfs_buf_item_format(bip); in xfs_buf_item_format()
384 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_pin() local
386 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_pin()
387 ASSERT((bip->bli_flags & XFS_BLI_LOGGED) || in xfs_buf_item_pin()
388 (bip->bli_flags & XFS_BLI_ORDERED) || in xfs_buf_item_pin()
389 (bip->bli_flags & XFS_BLI_STALE)); in xfs_buf_item_pin()
391 trace_xfs_buf_item_pin(bip); in xfs_buf_item_pin()
393 atomic_inc(&bip->bli_refcount); in xfs_buf_item_pin()
394 atomic_inc(&bip->bli_buf->b_pin_count); in xfs_buf_item_pin()
415 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_unpin() local
416 xfs_buf_t *bp = bip->bli_buf; in xfs_buf_item_unpin()
418 int stale = bip->bli_flags & XFS_BLI_STALE; in xfs_buf_item_unpin()
421 ASSERT(bp->b_fspriv == bip); in xfs_buf_item_unpin()
422 ASSERT(atomic_read(&bip->bli_refcount) > 0); in xfs_buf_item_unpin()
424 trace_xfs_buf_item_unpin(bip); in xfs_buf_item_unpin()
426 freed = atomic_dec_and_test(&bip->bli_refcount); in xfs_buf_item_unpin()
432 ASSERT(bip->bli_flags & XFS_BLI_STALE); in xfs_buf_item_unpin()
435 ASSERT(bip->__bli_format.blf_flags & XFS_BLF_CANCEL); in xfs_buf_item_unpin()
437 trace_xfs_buf_item_unpin_stale(bip); in xfs_buf_item_unpin()
464 if (bip->bli_flags & XFS_BLI_STALE_INODE) { in xfs_buf_item_unpin()
515 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_push() local
516 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_push()
534 ASSERT(!(bip->bli_flags & XFS_BLI_STALE)); in xfs_buf_item_push()
536 trace_xfs_buf_item_push(bip); in xfs_buf_item_push()
575 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_unlock() local
576 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_unlock()
596 flags = bip->bli_flags; in xfs_buf_item_unlock()
597 bip->bli_flags &= ~(XFS_BLI_LOGGED | XFS_BLI_HOLD | XFS_BLI_ORDERED); in xfs_buf_item_unlock()
605 trace_xfs_buf_item_unlock_stale(bip); in xfs_buf_item_unlock()
606 ASSERT(bip->__bli_format.blf_flags & XFS_BLF_CANCEL); in xfs_buf_item_unlock()
608 atomic_dec(&bip->bli_refcount); in xfs_buf_item_unlock()
613 trace_xfs_buf_item_unlock(bip); in xfs_buf_item_unlock()
628 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_unlock()
629 if (!xfs_bitmap_empty(bip->bli_formats[i].blf_data_map, in xfs_buf_item_unlock()
630 bip->bli_formats[i].blf_map_size)) { in xfs_buf_item_unlock()
645 if (atomic_dec_and_test(&bip->bli_refcount)) { in xfs_buf_item_unlock()
686 struct xfs_buf_log_item *bip = BUF_ITEM(lip); in xfs_buf_item_committed() local
688 trace_xfs_buf_item_committed(bip); in xfs_buf_item_committed()
690 if ((bip->bli_flags & XFS_BLI_INODE_ALLOC_BUF) && lip->li_lsn != 0) in xfs_buf_item_committed()
718 struct xfs_buf_log_item *bip, in xfs_buf_item_get_format() argument
721 ASSERT(bip->bli_formats == NULL); in xfs_buf_item_get_format()
722 bip->bli_format_count = count; in xfs_buf_item_get_format()
725 bip->bli_formats = &bip->__bli_format; in xfs_buf_item_get_format()
729 bip->bli_formats = kmem_zalloc(count * sizeof(struct xfs_buf_log_format), in xfs_buf_item_get_format()
731 if (!bip->bli_formats) in xfs_buf_item_get_format()
738 struct xfs_buf_log_item *bip) in xfs_buf_item_free_format() argument
740 if (bip->bli_formats != &bip->__bli_format) { in xfs_buf_item_free_format()
741 kmem_free(bip->bli_formats); in xfs_buf_item_free_format()
742 bip->bli_formats = NULL; in xfs_buf_item_free_format()
759 xfs_buf_log_item_t *bip; in xfs_buf_item_init() local
775 bip = kmem_zone_zalloc(xfs_buf_item_zone, KM_SLEEP); in xfs_buf_item_init()
776 xfs_log_item_init(mp, &bip->bli_item, XFS_LI_BUF, &xfs_buf_item_ops); in xfs_buf_item_init()
777 bip->bli_buf = bp; in xfs_buf_item_init()
789 error = xfs_buf_item_get_format(bip, bp->b_map_count); in xfs_buf_item_init()
792 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_init()
797 bip->bli_formats[i].blf_type = XFS_LI_BUF; 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()
800 bip->bli_formats[i].blf_map_size = map_size; 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()
900 xfs_buf_log_item_t *bip, in xfs_buf_item_log() argument
907 struct xfs_buf *bp = bip->bli_buf; in xfs_buf_item_log()
913 for (i = 0; i < bip->bli_format_count; i++) { in xfs_buf_item_log()
927 &bip->bli_formats[i].blf_data_map[0]); in xfs_buf_item_log()
940 xfs_buf_log_item_t *bip) in xfs_buf_item_dirty() argument
942 return (bip->bli_flags & XFS_BLI_DIRTY); in xfs_buf_item_dirty()
947 xfs_buf_log_item_t *bip) in xfs_buf_item_free() argument
949 xfs_buf_item_free_format(bip); in xfs_buf_item_free()
950 kmem_zone_free(xfs_buf_item_zone, bip); in xfs_buf_item_free()
964 xfs_buf_log_item_t *bip = bp->b_fspriv; in xfs_buf_item_relse() local
967 ASSERT(!(bip->bli_item.li_flags & XFS_LI_IN_AIL)); in xfs_buf_item_relse()
969 bp->b_fspriv = bip->bli_item.li_bio_list; in xfs_buf_item_relse()
974 xfs_buf_item_free(bip); in xfs_buf_item_relse()