Lines Matching refs:cur

45  * given by cur.
49 struct xfs_btree_cur *cur,
54 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_ag.pag->pag_agno,
57 cur->bc_rec.rc.rc_startblock = bno;
58 cur->bc_rec.rc.rc_blockcount = 0;
59 cur->bc_rec.rc.rc_domain = domain;
60 return xfs_btree_lookup(cur, XFS_LOOKUP_LE, stat);
65 * given by cur.
69 struct xfs_btree_cur *cur,
74 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_ag.pag->pag_agno,
77 cur->bc_rec.rc.rc_startblock = bno;
78 cur->bc_rec.rc.rc_blockcount = 0;
79 cur->bc_rec.rc.rc_domain = domain;
80 return xfs_btree_lookup(cur, XFS_LOOKUP_GE, stat);
85 * given by cur.
89 struct xfs_btree_cur *cur,
94 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_ag.pag->pag_agno,
97 cur->bc_rec.rc.rc_startblock = bno;
98 cur->bc_rec.rc.rc_blockcount = 0;
99 cur->bc_rec.rc.rc_domain = domain;
100 return xfs_btree_lookup(cur, XFS_LOOKUP_EQ, stat);
148 struct xfs_btree_cur *cur,
152 struct xfs_mount *mp = cur->bc_mp;
156 cur->bc_ag.pag->pag_agno, fa);
160 xfs_btree_mark_sick(cur);
169 struct xfs_btree_cur *cur,
177 error = xfs_btree_get_rec(cur, &rec, stat);
182 fa = xfs_refcount_check_irec(cur->bc_ag.pag, irec);
184 return xfs_refcount_complain_bad_rec(cur, fa, irec);
186 trace_xfs_refcount_get(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
191 * Update the record referred to by cur to the value given
197 struct xfs_btree_cur *cur,
204 trace_xfs_refcount_update(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
212 error = xfs_btree_update(cur, &rec);
214 trace_xfs_refcount_update_error(cur->bc_mp,
215 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
220 * Insert the record referred to by cur to the value given
226 struct xfs_btree_cur *cur,
232 trace_xfs_refcount_insert(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
234 cur->bc_rec.rc.rc_startblock = irec->rc_startblock;
235 cur->bc_rec.rc.rc_blockcount = irec->rc_blockcount;
236 cur->bc_rec.rc.rc_refcount = irec->rc_refcount;
237 cur->bc_rec.rc.rc_domain = irec->rc_domain;
239 error = xfs_btree_insert(cur, i);
242 if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) {
243 xfs_btree_mark_sick(cur);
250 trace_xfs_refcount_insert_error(cur->bc_mp,
251 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
256 * Remove the record referred to by cur, then set the pointer to the spot
263 struct xfs_btree_cur *cur,
270 error = xfs_refcount_get_rec(cur, &irec, &found_rec);
273 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
274 xfs_btree_mark_sick(cur);
278 trace_xfs_refcount_delete(cur->bc_mp, cur->bc_ag.pag->pag_agno, &irec);
279 error = xfs_btree_delete(cur, i);
280 if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) {
281 xfs_btree_mark_sick(cur);
287 error = xfs_refcount_lookup_ge(cur, irec.rc_domain, irec.rc_startblock,
291 trace_xfs_refcount_delete_error(cur->bc_mp,
292 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
386 struct xfs_btree_cur *cur,
396 error = xfs_refcount_lookup_le(cur, domain, agbno, &found_rec);
402 error = xfs_refcount_get_rec(cur, &rcext, &found_rec);
405 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
406 xfs_btree_mark_sick(cur);
416 trace_xfs_refcount_split_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
423 error = xfs_refcount_update(cur, &tmp);
430 error = xfs_refcount_insert(cur, &tmp, &found_rec);
433 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
434 xfs_btree_mark_sick(cur);
441 trace_xfs_refcount_split_extent_error(cur->bc_mp,
442 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
451 struct xfs_btree_cur *cur,
461 trace_xfs_refcount_merge_center_extents(cur->bc_mp,
462 cur->bc_ag.pag->pag_agno, left, center, right);
475 error = xfs_refcount_lookup_ge(cur, center->rc_domain,
479 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
480 xfs_btree_mark_sick(cur);
485 error = xfs_refcount_delete(cur, &found_rec);
488 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
489 xfs_btree_mark_sick(cur);
495 error = xfs_refcount_delete(cur, &found_rec);
498 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
499 xfs_btree_mark_sick(cur);
506 error = xfs_refcount_lookup_le(cur, left->rc_domain,
510 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
511 xfs_btree_mark_sick(cur);
517 error = xfs_refcount_update(cur, left);
525 trace_xfs_refcount_merge_center_extents_error(cur->bc_mp,
526 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
535 struct xfs_btree_cur *cur,
544 trace_xfs_refcount_merge_left_extent(cur->bc_mp,
545 cur->bc_ag.pag->pag_agno, left, cleft);
551 error = xfs_refcount_lookup_le(cur, cleft->rc_domain,
555 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
556 xfs_btree_mark_sick(cur);
561 error = xfs_refcount_delete(cur, &found_rec);
564 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
565 xfs_btree_mark_sick(cur);
572 error = xfs_refcount_lookup_le(cur, left->rc_domain,
576 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
577 xfs_btree_mark_sick(cur);
583 error = xfs_refcount_update(cur, left);
592 trace_xfs_refcount_merge_left_extent_error(cur->bc_mp,
593 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
602 struct xfs_btree_cur *cur,
610 trace_xfs_refcount_merge_right_extent(cur->bc_mp,
611 cur->bc_ag.pag->pag_agno, cright, right);
620 error = xfs_refcount_lookup_le(cur, cright->rc_domain,
624 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
625 xfs_btree_mark_sick(cur);
630 error = xfs_refcount_delete(cur, &found_rec);
633 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
634 xfs_btree_mark_sick(cur);
641 error = xfs_refcount_lookup_le(cur, right->rc_domain,
645 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
646 xfs_btree_mark_sick(cur);
653 error = xfs_refcount_update(cur, right);
661 trace_xfs_refcount_merge_right_extent_error(cur->bc_mp,
662 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
672 struct xfs_btree_cur *cur,
684 error = xfs_refcount_lookup_le(cur, domain, agbno - 1, &found_rec);
690 error = xfs_refcount_get_rec(cur, &tmp, &found_rec);
693 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
694 xfs_btree_mark_sick(cur);
706 error = xfs_btree_increment(cur, 0, &found_rec);
710 error = xfs_refcount_get_rec(cur, &tmp, &found_rec);
713 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
714 xfs_btree_mark_sick(cur);
751 trace_xfs_refcount_find_left_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
756 trace_xfs_refcount_find_left_extent_error(cur->bc_mp,
757 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
767 struct xfs_btree_cur *cur,
779 error = xfs_refcount_lookup_ge(cur, domain, agbno + aglen, &found_rec);
785 error = xfs_refcount_get_rec(cur, &tmp, &found_rec);
788 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
789 xfs_btree_mark_sick(cur);
801 error = xfs_btree_decrement(cur, 0, &found_rec);
805 error = xfs_refcount_get_rec(cur, &tmp, &found_rec);
808 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
809 xfs_btree_mark_sick(cur);
846 trace_xfs_refcount_find_right_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
851 trace_xfs_refcount_find_right_extent_error(cur->bc_mp,
852 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
994 struct xfs_btree_cur *cur,
1013 error = xfs_refcount_find_left_extents(cur, &left, &cleft, domain,
1017 error = xfs_refcount_find_right_extents(cur, &right, &cright, domain,
1033 return xfs_refcount_merge_center_extents(cur, &left, &cleft,
1040 error = xfs_refcount_merge_left_extent(cur, &left, &cleft,
1056 return xfs_refcount_merge_right_extent(cur, &right, &cright,
1071 struct xfs_btree_cur *cur)
1079 overhead = xfs_allocfree_block_count(cur->bc_mp,
1080 cur->bc_refc.shape_changes);
1081 overhead += cur->bc_mp->m_refc_maxlevels;
1082 overhead *= cur->bc_mp->m_sb.sb_blocksize;
1088 if (cur->bc_refc.nr_ops > 2 &&
1089 XFS_TEST_ERROR(false, cur->bc_mp,
1093 if (cur->bc_refc.nr_ops == 0)
1095 else if (overhead > cur->bc_tp->t_log_res)
1097 return cur->bc_tp->t_log_res - overhead >
1098 cur->bc_refc.nr_ops * XFS_REFCOUNT_ITEM_OVERHEAD;
1109 struct xfs_btree_cur *cur,
1123 error = xfs_refcount_lookup_ge(cur, XFS_REFC_DOMAIN_SHARED, *agbno,
1128 while (*aglen > 0 && xfs_refcount_still_have_space(cur)) {
1129 error = xfs_refcount_get_rec(cur, &ext, &found_rec);
1133 ext.rc_startblock = cur->bc_mp->m_sb.sb_agblocks;
1151 trace_xfs_refcount_modify_extent(cur->bc_mp,
1152 cur->bc_ag.pag->pag_agno, &tmp);
1158 cur->bc_refc.nr_ops++;
1160 error = xfs_refcount_insert(cur, &tmp,
1164 if (XFS_IS_CORRUPT(cur->bc_mp,
1166 xfs_btree_mark_sick(cur);
1171 fsbno = XFS_AGB_TO_FSB(cur->bc_mp,
1172 cur->bc_ag.pag->pag_agno,
1174 error = xfs_free_extent_later(cur->bc_tp, fsbno,
1185 if (*aglen == 0 || !xfs_refcount_still_have_space(cur))
1189 error = xfs_refcount_lookup_ge(cur,
1203 if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_blockcount == 0) ||
1204 XFS_IS_CORRUPT(cur->bc_mp, ext.rc_blockcount > *aglen)) {
1205 xfs_btree_mark_sick(cur);
1217 trace_xfs_refcount_modify_extent(cur->bc_mp,
1218 cur->bc_ag.pag->pag_agno, &ext);
1219 cur->bc_refc.nr_ops++;
1221 error = xfs_refcount_update(cur, &ext);
1225 error = xfs_refcount_delete(cur, &found_rec);
1228 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
1229 xfs_btree_mark_sick(cur);
1235 fsbno = XFS_AGB_TO_FSB(cur->bc_mp,
1236 cur->bc_ag.pag->pag_agno,
1238 error = xfs_free_extent_later(cur->bc_tp, fsbno,
1246 error = xfs_btree_increment(cur, 0, &found_rec);
1257 trace_xfs_refcount_modify_extent_error(cur->bc_mp,
1258 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
1265 struct xfs_btree_cur *cur,
1275 trace_xfs_refcount_increase(cur->bc_mp,
1276 cur->bc_ag.pag->pag_agno, *agbno, *aglen);
1278 trace_xfs_refcount_decrease(cur->bc_mp,
1279 cur->bc_ag.pag->pag_agno, *agbno, *aglen);
1284 error = xfs_refcount_split_extent(cur, XFS_REFC_DOMAIN_SHARED,
1291 error = xfs_refcount_split_extent(cur, XFS_REFC_DOMAIN_SHARED,
1301 error = xfs_refcount_merge_extents(cur, XFS_REFC_DOMAIN_SHARED,
1308 cur->bc_refc.shape_changes++;
1311 error = xfs_refcount_adjust_extents(cur, agbno, aglen, adj);
1318 trace_xfs_refcount_adjust_error(cur->bc_mp, cur->bc_ag.pag->pag_agno,
1346 struct xfs_btree_cur *cur,
1350 struct xfs_mount *mp = cur->bc_mp;
1351 struct xfs_perag *pag = cur->bc_ag.pag;
1355 xfs_btree_mark_sick(cur);
1528 struct xfs_btree_cur *cur,
1540 trace_xfs_refcount_find_shared(cur->bc_mp, cur->bc_ag.pag->pag_agno,
1548 error = xfs_refcount_lookup_le(cur, XFS_REFC_DOMAIN_SHARED, agbno,
1554 error = xfs_btree_increment(cur, 0, &have);
1560 error = xfs_refcount_get_rec(cur, &tmp, &i);
1563 if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
1564 xfs_btree_mark_sick(cur);
1573 error = xfs_btree_increment(cur, 0, &have);
1578 error = xfs_refcount_get_rec(cur, &tmp, &i);
1581 if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
1582 xfs_btree_mark_sick(cur);
1607 error = xfs_btree_increment(cur, 0, &have);
1612 error = xfs_refcount_get_rec(cur, &tmp, &i);
1615 if (XFS_IS_CORRUPT(cur->bc_mp, i != 1)) {
1616 xfs_btree_mark_sick(cur);
1628 trace_xfs_refcount_find_shared_result(cur->bc_mp,
1629 cur->bc_ag.pag->pag_agno, *fbno, *flen);
1633 trace_xfs_refcount_find_shared_error(cur->bc_mp,
1634 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
1692 struct xfs_btree_cur *cur,
1705 error = xfs_refcount_lookup_ge(cur, XFS_REFC_DOMAIN_COW, agbno,
1709 error = xfs_refcount_get_rec(cur, &ext, &found_rec);
1712 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec &&
1714 xfs_btree_mark_sick(cur);
1719 ext.rc_startblock = cur->bc_mp->m_sb.sb_agblocks;
1728 if (XFS_IS_CORRUPT(cur->bc_mp,
1730 xfs_btree_mark_sick(cur);
1740 trace_xfs_refcount_modify_extent(cur->bc_mp,
1741 cur->bc_ag.pag->pag_agno, &tmp);
1743 error = xfs_refcount_insert(cur, &tmp,
1747 if (XFS_IS_CORRUPT(cur->bc_mp, found_tmp != 1)) {
1748 xfs_btree_mark_sick(cur);
1755 if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_startblock != agbno)) {
1756 xfs_btree_mark_sick(cur);
1760 if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_blockcount != aglen)) {
1761 xfs_btree_mark_sick(cur);
1765 if (XFS_IS_CORRUPT(cur->bc_mp, ext.rc_refcount != 1)) {
1766 xfs_btree_mark_sick(cur);
1772 trace_xfs_refcount_modify_extent(cur->bc_mp,
1773 cur->bc_ag.pag->pag_agno, &ext);
1774 error = xfs_refcount_delete(cur, &found_rec);
1777 if (XFS_IS_CORRUPT(cur->bc_mp, found_rec != 1)) {
1778 xfs_btree_mark_sick(cur);
1789 trace_xfs_refcount_modify_extent_error(cur->bc_mp,
1790 cur->bc_ag.pag->pag_agno, error, _RET_IP_);
1799 struct xfs_btree_cur *cur,
1810 error = xfs_refcount_split_extent(cur, XFS_REFC_DOMAIN_COW,
1815 error = xfs_refcount_split_extent(cur, XFS_REFC_DOMAIN_COW,
1823 error = xfs_refcount_merge_extents(cur, XFS_REFC_DOMAIN_COW, &agbno,
1829 error = xfs_refcount_adjust_cow_extents(cur, agbno, aglen, adj);
1836 trace_xfs_refcount_adjust_cow_error(cur->bc_mp, cur->bc_ag.pag->pag_agno,
1920 struct xfs_btree_cur *cur,
1927 if (XFS_IS_CORRUPT(cur->bc_mp,
1929 xfs_btree_mark_sick(cur);
1938 if (xfs_refcount_check_irec(cur->bc_ag.pag, &rr->rr_rrec) != NULL ||
1939 XFS_IS_CORRUPT(cur->bc_mp,
1941 xfs_btree_mark_sick(cur);
1957 struct xfs_btree_cur *cur;
1995 cur = xfs_refcountbt_init_cursor(mp, tp, agbp, pag);
1998 error = xfs_btree_query_range(cur, &low, &high,
2000 xfs_btree_del_cursor(cur, error);
2055 struct xfs_btree_cur *cur,
2070 return xfs_btree_has_records(cur, &low, &high, NULL, outcome);
2081 struct xfs_btree_cur *cur,
2090 fa = xfs_refcount_check_irec(cur->bc_ag.pag, &irec);
2092 return xfs_refcount_complain_bad_rec(cur, fa, &irec);
2094 return query->fn(cur, &irec, query->priv);
2100 struct xfs_btree_cur *cur,
2110 return xfs_btree_query_range(cur, &low_brec, &high_brec,