Lines Matching refs:cur

45 	struct xfs_btree_cur	*cur,  in xfs_refcount_lookup_le()  argument
49 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_ag.agno, bno, in xfs_refcount_lookup_le()
51 cur->bc_rec.rc.rc_startblock = bno; in xfs_refcount_lookup_le()
52 cur->bc_rec.rc.rc_blockcount = 0; in xfs_refcount_lookup_le()
53 return xfs_btree_lookup(cur, XFS_LOOKUP_LE, stat); in xfs_refcount_lookup_le()
62 struct xfs_btree_cur *cur, in xfs_refcount_lookup_ge() argument
66 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_ag.agno, bno, in xfs_refcount_lookup_ge()
68 cur->bc_rec.rc.rc_startblock = bno; in xfs_refcount_lookup_ge()
69 cur->bc_rec.rc.rc_blockcount = 0; in xfs_refcount_lookup_ge()
70 return xfs_btree_lookup(cur, XFS_LOOKUP_GE, stat); in xfs_refcount_lookup_ge()
79 struct xfs_btree_cur *cur, in xfs_refcount_lookup_eq() argument
83 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_ag.agno, bno, in xfs_refcount_lookup_eq()
85 cur->bc_rec.rc.rc_startblock = bno; in xfs_refcount_lookup_eq()
86 cur->bc_rec.rc.rc_blockcount = 0; in xfs_refcount_lookup_eq()
87 return xfs_btree_lookup(cur, XFS_LOOKUP_EQ, stat); in xfs_refcount_lookup_eq()
106 struct xfs_btree_cur *cur, in xfs_refcount_get_rec() argument
110 struct xfs_mount *mp = cur->bc_mp; in xfs_refcount_get_rec()
111 xfs_agnumber_t agno = cur->bc_ag.agno; in xfs_refcount_get_rec()
116 error = xfs_btree_get_rec(cur, &rec, stat); in xfs_refcount_get_rec()
122 agno = cur->bc_ag.agno; in xfs_refcount_get_rec()
147 trace_xfs_refcount_get(cur->bc_mp, cur->bc_ag.agno, irec); in xfs_refcount_get_rec()
166 struct xfs_btree_cur *cur, in xfs_refcount_update() argument
172 trace_xfs_refcount_update(cur->bc_mp, cur->bc_ag.agno, irec); in xfs_refcount_update()
176 error = xfs_btree_update(cur, &rec); in xfs_refcount_update()
178 trace_xfs_refcount_update_error(cur->bc_mp, in xfs_refcount_update()
179 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_update()
190 struct xfs_btree_cur *cur, in xfs_refcount_insert() argument
196 trace_xfs_refcount_insert(cur->bc_mp, cur->bc_ag.agno, irec); in xfs_refcount_insert()
197 cur->bc_rec.rc.rc_startblock = irec->rc_startblock; in xfs_refcount_insert()
198 cur->bc_rec.rc.rc_blockcount = irec->rc_blockcount; in xfs_refcount_insert()
199 cur->bc_rec.rc.rc_refcount = irec->rc_refcount; in xfs_refcount_insert()
200 error = xfs_btree_insert(cur, i); in xfs_refcount_insert()
203 if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) { in xfs_refcount_insert()
210 trace_xfs_refcount_insert_error(cur->bc_mp, in xfs_refcount_insert()
211 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_insert()
223 struct xfs_btree_cur *cur, in xfs_refcount_delete() argument
230 error = xfs_refcount_get_rec(cur, &irec, &found_rec); in xfs_refcount_delete()
233 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_delete()
237 trace_xfs_refcount_delete(cur->bc_mp, cur->bc_ag.agno, &irec); in xfs_refcount_delete()
238 error = xfs_btree_delete(cur, i); in xfs_refcount_delete()
239 if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) { in xfs_refcount_delete()
245 error = xfs_refcount_lookup_ge(cur, irec.rc_startblock, &found_rec); in xfs_refcount_delete()
248 trace_xfs_refcount_delete_error(cur->bc_mp, in xfs_refcount_delete()
249 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_delete()
343 struct xfs_btree_cur *cur, in xfs_refcount_split_extent() argument
352 error = xfs_refcount_lookup_le(cur, agbno, &found_rec); in xfs_refcount_split_extent()
358 error = xfs_refcount_get_rec(cur, &rcext, &found_rec); in xfs_refcount_split_extent()
361 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_split_extent()
369 trace_xfs_refcount_split_extent(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_split_extent()
376 error = xfs_refcount_update(cur, &tmp); in xfs_refcount_split_extent()
383 error = xfs_refcount_insert(cur, &tmp, &found_rec); in xfs_refcount_split_extent()
386 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_split_extent()
393 trace_xfs_refcount_split_extent_error(cur->bc_mp, in xfs_refcount_split_extent()
394 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_split_extent()
403 struct xfs_btree_cur *cur, in xfs_refcount_merge_center_extents() argument
413 trace_xfs_refcount_merge_center_extents(cur->bc_mp, in xfs_refcount_merge_center_extents()
414 cur->bc_ag.agno, left, center, right); in xfs_refcount_merge_center_extents()
424 error = xfs_refcount_lookup_ge(cur, center->rc_startblock, in xfs_refcount_merge_center_extents()
428 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_center_extents()
433 error = xfs_refcount_delete(cur, &found_rec); in xfs_refcount_merge_center_extents()
436 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_center_extents()
442 error = xfs_refcount_delete(cur, &found_rec); in xfs_refcount_merge_center_extents()
445 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_center_extents()
452 error = xfs_refcount_lookup_le(cur, left->rc_startblock, in xfs_refcount_merge_center_extents()
456 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_center_extents()
462 error = xfs_refcount_update(cur, left); in xfs_refcount_merge_center_extents()
470 trace_xfs_refcount_merge_center_extents_error(cur->bc_mp, in xfs_refcount_merge_center_extents()
471 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_merge_center_extents()
480 struct xfs_btree_cur *cur, in xfs_refcount_merge_left_extent() argument
489 trace_xfs_refcount_merge_left_extent(cur->bc_mp, in xfs_refcount_merge_left_extent()
490 cur->bc_ag.agno, left, cleft); in xfs_refcount_merge_left_extent()
494 error = xfs_refcount_lookup_le(cur, cleft->rc_startblock, in xfs_refcount_merge_left_extent()
498 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_left_extent()
503 error = xfs_refcount_delete(cur, &found_rec); in xfs_refcount_merge_left_extent()
506 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_left_extent()
513 error = xfs_refcount_lookup_le(cur, left->rc_startblock, in xfs_refcount_merge_left_extent()
517 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_left_extent()
523 error = xfs_refcount_update(cur, left); in xfs_refcount_merge_left_extent()
532 trace_xfs_refcount_merge_left_extent_error(cur->bc_mp, in xfs_refcount_merge_left_extent()
533 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_merge_left_extent()
542 struct xfs_btree_cur *cur, in xfs_refcount_merge_right_extent() argument
550 trace_xfs_refcount_merge_right_extent(cur->bc_mp, in xfs_refcount_merge_right_extent()
551 cur->bc_ag.agno, cright, right); in xfs_refcount_merge_right_extent()
558 error = xfs_refcount_lookup_le(cur, cright->rc_startblock, in xfs_refcount_merge_right_extent()
562 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_right_extent()
567 error = xfs_refcount_delete(cur, &found_rec); in xfs_refcount_merge_right_extent()
570 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_right_extent()
577 error = xfs_refcount_lookup_le(cur, right->rc_startblock, in xfs_refcount_merge_right_extent()
581 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_merge_right_extent()
588 error = xfs_refcount_update(cur, right); in xfs_refcount_merge_right_extent()
596 trace_xfs_refcount_merge_right_extent_error(cur->bc_mp, in xfs_refcount_merge_right_extent()
597 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_merge_right_extent()
609 struct xfs_btree_cur *cur, in xfs_refcount_find_left_extents() argument
621 error = xfs_refcount_lookup_le(cur, agbno - 1, &found_rec); in xfs_refcount_find_left_extents()
627 error = xfs_refcount_get_rec(cur, &tmp, &found_rec); in xfs_refcount_find_left_extents()
630 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_find_left_extents()
644 error = xfs_btree_increment(cur, 0, &found_rec); in xfs_refcount_find_left_extents()
648 error = xfs_refcount_get_rec(cur, &tmp, &found_rec); in xfs_refcount_find_left_extents()
651 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_find_left_extents()
682 trace_xfs_refcount_find_left_extent(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_find_left_extents()
687 trace_xfs_refcount_find_left_extent_error(cur->bc_mp, in xfs_refcount_find_left_extents()
688 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_find_left_extents()
698 struct xfs_btree_cur *cur, in xfs_refcount_find_right_extents() argument
710 error = xfs_refcount_lookup_ge(cur, agbno + aglen, &found_rec); in xfs_refcount_find_right_extents()
716 error = xfs_refcount_get_rec(cur, &tmp, &found_rec); in xfs_refcount_find_right_extents()
719 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_find_right_extents()
733 error = xfs_btree_decrement(cur, 0, &found_rec); in xfs_refcount_find_right_extents()
737 error = xfs_refcount_get_rec(cur, &tmp, &found_rec); in xfs_refcount_find_right_extents()
740 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_find_right_extents()
771 trace_xfs_refcount_find_right_extent(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_find_right_extents()
776 trace_xfs_refcount_find_right_extent_error(cur->bc_mp, in xfs_refcount_find_right_extents()
777 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_find_right_extents()
794 struct xfs_btree_cur *cur, in xfs_refcount_merge_extents() argument
813 error = xfs_refcount_find_left_extents(cur, &left, &cleft, *agbno, in xfs_refcount_merge_extents()
817 error = xfs_refcount_find_right_extents(cur, &right, &cright, *agbno, in xfs_refcount_merge_extents()
838 return xfs_refcount_merge_center_extents(cur, &left, &cleft, in xfs_refcount_merge_extents()
848 error = xfs_refcount_merge_left_extent(cur, &left, &cleft, in xfs_refcount_merge_extents()
867 return xfs_refcount_merge_right_extent(cur, &right, &cright, in xfs_refcount_merge_extents()
882 struct xfs_btree_cur *cur) in xfs_refcount_still_have_space() argument
886 overhead = cur->bc_ag.refc.shape_changes * in xfs_refcount_still_have_space()
887 xfs_allocfree_log_count(cur->bc_mp, 1); in xfs_refcount_still_have_space()
888 overhead *= cur->bc_mp->m_sb.sb_blocksize; in xfs_refcount_still_have_space()
894 if (cur->bc_ag.refc.nr_ops > 2 && in xfs_refcount_still_have_space()
895 XFS_TEST_ERROR(false, cur->bc_mp, in xfs_refcount_still_have_space()
899 if (cur->bc_ag.refc.nr_ops == 0) in xfs_refcount_still_have_space()
901 else if (overhead > cur->bc_tp->t_log_res) in xfs_refcount_still_have_space()
903 return cur->bc_tp->t_log_res - overhead > in xfs_refcount_still_have_space()
904 cur->bc_ag.refc.nr_ops * XFS_REFCOUNT_ITEM_OVERHEAD; in xfs_refcount_still_have_space()
915 struct xfs_btree_cur *cur, in xfs_refcount_adjust_extents() argument
930 error = xfs_refcount_lookup_ge(cur, *agbno, &found_rec); in xfs_refcount_adjust_extents()
934 while (*aglen > 0 && xfs_refcount_still_have_space(cur)) { in xfs_refcount_adjust_extents()
935 error = xfs_refcount_get_rec(cur, &ext, &found_rec); in xfs_refcount_adjust_extents()
939 ext.rc_startblock = cur->bc_mp->m_sb.sb_agblocks; in xfs_refcount_adjust_extents()
954 trace_xfs_refcount_modify_extent(cur->bc_mp, in xfs_refcount_adjust_extents()
955 cur->bc_ag.agno, &tmp); in xfs_refcount_adjust_extents()
962 error = xfs_refcount_insert(cur, &tmp, in xfs_refcount_adjust_extents()
966 if (XFS_IS_CORRUPT(cur->bc_mp, in xfs_refcount_adjust_extents()
971 cur->bc_ag.refc.nr_ops++; in xfs_refcount_adjust_extents()
973 fsbno = XFS_AGB_TO_FSB(cur->bc_mp, in xfs_refcount_adjust_extents()
974 cur->bc_ag.agno, in xfs_refcount_adjust_extents()
976 xfs_bmap_add_free(cur->bc_tp, fsbno, in xfs_refcount_adjust_extents()
983 error = xfs_refcount_lookup_ge(cur, *agbno, in xfs_refcount_adjust_extents()
990 if (*aglen == 0 || !xfs_refcount_still_have_space(cur)) in xfs_refcount_adjust_extents()
1000 trace_xfs_refcount_modify_extent(cur->bc_mp, in xfs_refcount_adjust_extents()
1001 cur->bc_ag.agno, &ext); in xfs_refcount_adjust_extents()
1003 error = xfs_refcount_update(cur, &ext); in xfs_refcount_adjust_extents()
1006 cur->bc_ag.refc.nr_ops++; in xfs_refcount_adjust_extents()
1008 error = xfs_refcount_delete(cur, &found_rec); in xfs_refcount_adjust_extents()
1011 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_adjust_extents()
1015 cur->bc_ag.refc.nr_ops++; in xfs_refcount_adjust_extents()
1018 fsbno = XFS_AGB_TO_FSB(cur->bc_mp, in xfs_refcount_adjust_extents()
1019 cur->bc_ag.agno, in xfs_refcount_adjust_extents()
1021 xfs_bmap_add_free(cur->bc_tp, fsbno, ext.rc_blockcount, in xfs_refcount_adjust_extents()
1026 error = xfs_btree_increment(cur, 0, &found_rec); in xfs_refcount_adjust_extents()
1037 trace_xfs_refcount_modify_extent_error(cur->bc_mp, in xfs_refcount_adjust_extents()
1038 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_adjust_extents()
1045 struct xfs_btree_cur *cur, in xfs_refcount_adjust() argument
1060 trace_xfs_refcount_increase(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_adjust()
1063 trace_xfs_refcount_decrease(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_adjust()
1069 error = xfs_refcount_split_extent(cur, agbno, &shape_changed); in xfs_refcount_adjust()
1075 error = xfs_refcount_split_extent(cur, agbno + aglen, &shape_changed); in xfs_refcount_adjust()
1084 error = xfs_refcount_merge_extents(cur, new_agbno, new_aglen, adj, in xfs_refcount_adjust()
1091 cur->bc_ag.refc.shape_changes++; in xfs_refcount_adjust()
1094 error = xfs_refcount_adjust_extents(cur, new_agbno, new_aglen, in xfs_refcount_adjust()
1102 trace_xfs_refcount_adjust_error(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_adjust()
1294 struct xfs_btree_cur *cur, in xfs_refcount_find_shared() argument
1306 trace_xfs_refcount_find_shared(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_find_shared()
1314 error = xfs_refcount_lookup_le(cur, agbno, &have); in xfs_refcount_find_shared()
1319 error = xfs_btree_increment(cur, 0, &have); in xfs_refcount_find_shared()
1325 error = xfs_refcount_get_rec(cur, &tmp, &i); in xfs_refcount_find_shared()
1328 if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) { in xfs_refcount_find_shared()
1335 error = xfs_btree_increment(cur, 0, &have); in xfs_refcount_find_shared()
1340 error = xfs_refcount_get_rec(cur, &tmp, &i); in xfs_refcount_find_shared()
1343 if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) { in xfs_refcount_find_shared()
1366 error = xfs_btree_increment(cur, 0, &have); in xfs_refcount_find_shared()
1371 error = xfs_refcount_get_rec(cur, &tmp, &i); in xfs_refcount_find_shared()
1374 if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) { in xfs_refcount_find_shared()
1385 trace_xfs_refcount_find_shared_result(cur->bc_mp, in xfs_refcount_find_shared()
1386 cur->bc_ag.agno, *fbno, *flen); in xfs_refcount_find_shared()
1390 trace_xfs_refcount_find_shared_error(cur->bc_mp, in xfs_refcount_find_shared()
1391 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_find_shared()
1449 struct xfs_btree_cur *cur, in xfs_refcount_adjust_cow_extents() argument
1462 error = xfs_refcount_lookup_ge(cur, agbno, &found_rec); in xfs_refcount_adjust_cow_extents()
1465 error = xfs_refcount_get_rec(cur, &ext, &found_rec); in xfs_refcount_adjust_cow_extents()
1469 ext.rc_startblock = cur->bc_mp->m_sb.sb_agblocks + in xfs_refcount_adjust_cow_extents()
1478 if (XFS_IS_CORRUPT(cur->bc_mp, in xfs_refcount_adjust_cow_extents()
1487 trace_xfs_refcount_modify_extent(cur->bc_mp, in xfs_refcount_adjust_cow_extents()
1488 cur->bc_ag.agno, &tmp); in xfs_refcount_adjust_cow_extents()
1490 error = xfs_refcount_insert(cur, &tmp, in xfs_refcount_adjust_cow_extents()
1494 if (XFS_IS_CORRUPT(cur->bc_mp, found_tmp != 1)) { in xfs_refcount_adjust_cow_extents()
1501 if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_startblock != agbno)) { in xfs_refcount_adjust_cow_extents()
1505 if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_blockcount != aglen)) { in xfs_refcount_adjust_cow_extents()
1509 if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_refcount != 1)) { in xfs_refcount_adjust_cow_extents()
1515 trace_xfs_refcount_modify_extent(cur->bc_mp, in xfs_refcount_adjust_cow_extents()
1516 cur->bc_ag.agno, &ext); in xfs_refcount_adjust_cow_extents()
1517 error = xfs_refcount_delete(cur, &found_rec); in xfs_refcount_adjust_cow_extents()
1520 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) { in xfs_refcount_adjust_cow_extents()
1531 trace_xfs_refcount_modify_extent_error(cur->bc_mp, in xfs_refcount_adjust_cow_extents()
1532 cur->bc_ag.agno, error, _RET_IP_); in xfs_refcount_adjust_cow_extents()
1541 struct xfs_btree_cur *cur, in xfs_refcount_adjust_cow() argument
1554 error = xfs_refcount_split_extent(cur, agbno, &shape_changed); in xfs_refcount_adjust_cow()
1558 error = xfs_refcount_split_extent(cur, agbno + aglen, &shape_changed); in xfs_refcount_adjust_cow()
1565 error = xfs_refcount_merge_extents(cur, &agbno, &aglen, adj, in xfs_refcount_adjust_cow()
1571 error = xfs_refcount_adjust_cow_extents(cur, agbno, aglen, adj); in xfs_refcount_adjust_cow()
1578 trace_xfs_refcount_adjust_cow_error(cur->bc_mp, cur->bc_ag.agno, in xfs_refcount_adjust_cow()
1662 struct xfs_btree_cur *cur, in xfs_refcount_recover_extent() argument
1669 if (XFS_IS_CORRUPT(cur->bc_mp, in xfs_refcount_recover_extent()
1687 struct xfs_btree_cur *cur; in xfs_refcount_recover_cow_leftovers() local
1719 cur = xfs_refcountbt_init_cursor(mp, tp, agbp, agno); in xfs_refcount_recover_cow_leftovers()
1726 error = xfs_btree_query_range(cur, &low, &high, in xfs_refcount_recover_cow_leftovers()
1728 xfs_btree_del_cursor(cur, error); in xfs_refcount_recover_cow_leftovers()
1775 struct xfs_btree_cur *cur, in xfs_refcount_has_record() argument
1788 return xfs_btree_has_record(cur, &low, &high, exists); in xfs_refcount_has_record()