• Home
  • Raw
  • Download

Lines Matching refs:rs

186 static inline int rs_cmp(u64 blk, u32 len, struct gfs2_blkreserv *rs)  in rs_cmp()  argument
188 u64 startblk = gfs2_rbm_to_block(&rs->rs_rbm); in rs_cmp()
190 if (blk >= startblk + rs->rs_free) in rs_cmp()
622 static void dump_rs(struct seq_file *seq, const struct gfs2_blkreserv *rs) in dump_rs() argument
625 (unsigned long long)rs->rs_inum, in dump_rs()
626 (unsigned long long)gfs2_rbm_to_block(&rs->rs_rbm), in dump_rs()
627 rs->rs_rbm.offset, rs->rs_free); in dump_rs()
635 static void __rs_deltree(struct gfs2_blkreserv *rs) in __rs_deltree() argument
639 if (!gfs2_rs_active(rs)) in __rs_deltree()
642 rgd = rs->rs_rbm.rgd; in __rs_deltree()
643 trace_gfs2_rs(rs, TRACE_RS_TREEDEL); in __rs_deltree()
644 rb_erase(&rs->rs_node, &rgd->rd_rstree); in __rs_deltree()
645 RB_CLEAR_NODE(&rs->rs_node); in __rs_deltree()
647 if (rs->rs_free) { in __rs_deltree()
648 u64 last_block = gfs2_rbm_to_block(&rs->rs_rbm) + in __rs_deltree()
649 rs->rs_free - 1; in __rs_deltree()
650 struct gfs2_rbm last_rbm = { .rgd = rs->rs_rbm.rgd, }; in __rs_deltree()
654 BUG_ON(rs->rs_rbm.rgd->rd_reserved < rs->rs_free); in __rs_deltree()
655 rs->rs_rbm.rgd->rd_reserved -= rs->rs_free; in __rs_deltree()
660 rgd->rd_extfail_pt += rs->rs_free; in __rs_deltree()
661 rs->rs_free = 0; in __rs_deltree()
664 start = rbm_bi(&rs->rs_rbm); in __rs_deltree()
677 void gfs2_rs_deltree(struct gfs2_blkreserv *rs) in gfs2_rs_deltree() argument
681 rgd = rs->rs_rbm.rgd; in gfs2_rs_deltree()
684 __rs_deltree(rs); in gfs2_rs_deltree()
718 struct gfs2_blkreserv *rs; in return_all_reservations() local
722 rs = rb_entry(n, struct gfs2_blkreserv, rs_node); in return_all_reservations()
723 __rs_deltree(rs); in return_all_reservations()
1479 struct gfs2_blkreserv *rs = ip->i_res; in rs_insert() local
1480 struct gfs2_rgrpd *rgd = rs->rs_rbm.rgd; in rs_insert()
1481 u64 fsblock = gfs2_rbm_to_block(&rs->rs_rbm); in rs_insert()
1483 BUG_ON(gfs2_rs_active(rs)); in rs_insert()
1492 rc = rs_cmp(fsblock, rs->rs_free, cur); in rs_insert()
1504 rb_link_node(&rs->rs_node, parent, newn); in rs_insert()
1505 rb_insert_color(&rs->rs_node, &rgd->rd_rstree); in rs_insert()
1508 rgd->rd_reserved += rs->rs_free; /* blocks reserved */ in rs_insert()
1510 trace_gfs2_rs(rs, TRACE_RS_INSERT); in rs_insert()
1526 struct gfs2_blkreserv *rs = ip->i_res; in rg_mblk_search() local
1535 extlen = max_t(u32, atomic_read(&rs->rs_sizehint), ap->target); in rg_mblk_search()
1552 rs->rs_rbm = rbm; in rg_mblk_search()
1553 rs->rs_free = extlen; in rg_mblk_search()
1554 rs->rs_inum = ip->i_no_addr; in rg_mblk_search()
1579 struct gfs2_blkreserv *rs; in gfs2_next_unreserved_block() local
1586 rs = rb_entry(n, struct gfs2_blkreserv, rs_node); in gfs2_next_unreserved_block()
1587 rc = rs_cmp(block, length, rs); in gfs2_next_unreserved_block()
1597 while ((rs_cmp(block, length, rs) == 0) && (ip->i_res != rs)) { in gfs2_next_unreserved_block()
1598 block = gfs2_rbm_to_block(&rs->rs_rbm) + rs->rs_free; in gfs2_next_unreserved_block()
1602 rs = rb_entry(n, struct gfs2_blkreserv, rs_node); in gfs2_next_unreserved_block()
1934 static bool gfs2_rgrp_used_recently(const struct gfs2_blkreserv *rs, in gfs2_rgrp_used_recently() argument
1940 rs->rs_rbm.rgd->rd_gl->gl_dstamp)); in gfs2_rgrp_used_recently()
2007 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_reserve() local
2017 if (gfs2_rs_active(rs)) { in gfs2_inplace_reserve()
2018 begin = rs->rs_rbm.rgd; in gfs2_inplace_reserve()
2020 rs->rs_rbm.rgd = begin = ip->i_rgd; in gfs2_inplace_reserve()
2023 rs->rs_rbm.rgd = begin = gfs2_blk2rgrpd(sdp, ip->i_goal, 1); in gfs2_inplace_reserve()
2027 if (rs->rs_rbm.rgd == NULL) in gfs2_inplace_reserve()
2033 if (!gfs2_glock_is_locked_by_me(rs->rs_rbm.rgd->rd_gl)) { in gfs2_inplace_reserve()
2037 if (!gfs2_rs_active(rs)) { in gfs2_inplace_reserve()
2039 !fast_to_acquire(rs->rs_rbm.rgd)) in gfs2_inplace_reserve()
2042 gfs2_rgrp_used_recently(rs, 1000) && in gfs2_inplace_reserve()
2043 gfs2_rgrp_congested(rs->rs_rbm.rgd, loops)) in gfs2_inplace_reserve()
2046 error = gfs2_glock_nq_init(rs->rs_rbm.rgd->rd_gl, in gfs2_inplace_reserve()
2048 &rs->rs_rgd_gh); in gfs2_inplace_reserve()
2051 if (!gfs2_rs_active(rs) && (loops < 2) && in gfs2_inplace_reserve()
2052 gfs2_rgrp_congested(rs->rs_rbm.rgd, loops)) in gfs2_inplace_reserve()
2055 error = update_rgrp_lvb(rs->rs_rbm.rgd); in gfs2_inplace_reserve()
2057 gfs2_glock_dq_uninit(&rs->rs_rgd_gh); in gfs2_inplace_reserve()
2064 if ((rs->rs_rbm.rgd->rd_flags & (GFS2_RGF_NOALLOC | in gfs2_inplace_reserve()
2066 (loops == 0 && ap->target > rs->rs_rbm.rgd->rd_extfail_pt)) in gfs2_inplace_reserve()
2070 gfs2_rgrp_bh_get(rs->rs_rbm.rgd); in gfs2_inplace_reserve()
2073 if (!gfs2_rs_active(rs)) in gfs2_inplace_reserve()
2074 rg_mblk_search(rs->rs_rbm.rgd, ip, ap); in gfs2_inplace_reserve()
2077 if (!gfs2_rs_active(rs) && (loops < 1)) in gfs2_inplace_reserve()
2081 if (rs->rs_rbm.rgd->rd_free_clone >= ap->target || in gfs2_inplace_reserve()
2083 rs->rs_rbm.rgd->rd_free_clone >= ap->min_target)) { in gfs2_inplace_reserve()
2084 ip->i_rgd = rs->rs_rbm.rgd; in gfs2_inplace_reserve()
2090 if (rs->rs_rbm.rgd->rd_flags & GFS2_RDF_CHECK) in gfs2_inplace_reserve()
2091 try_rgrp_unlink(rs->rs_rbm.rgd, &last_unlinked, in gfs2_inplace_reserve()
2095 if (gfs2_rs_active(rs)) in gfs2_inplace_reserve()
2096 gfs2_rs_deltree(rs); in gfs2_inplace_reserve()
2100 gfs2_glock_dq_uninit(&rs->rs_rgd_gh); in gfs2_inplace_reserve()
2103 if (gfs2_select_rgrp(&rs->rs_rbm.rgd, begin)) in gfs2_inplace_reserve()
2136 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_release() local
2138 if (rs->rs_rgd_gh.gh_gl) in gfs2_inplace_release()
2139 gfs2_glock_dq_uninit(&rs->rs_rgd_gh); in gfs2_inplace_release()
2290 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_adjust_reservation() local
2297 if (gfs2_rs_active(rs)) { in gfs2_adjust_reservation()
2298 if (gfs2_rbm_eq(&rs->rs_rbm, rbm)) { in gfs2_adjust_reservation()
2300 ret = gfs2_rbm_from_block(&rs->rs_rbm, block + len); in gfs2_adjust_reservation()
2301 rlen = min(rs->rs_free, len); in gfs2_adjust_reservation()
2302 rs->rs_free -= rlen; in gfs2_adjust_reservation()
2304 trace_gfs2_rs(rs, TRACE_RS_CLAIM); in gfs2_adjust_reservation()
2305 if (rs->rs_free && !ret) in gfs2_adjust_reservation()
2309 atomic_add(RGRP_RSRV_ADDBLKS, &rs->rs_sizehint); in gfs2_adjust_reservation()
2311 __rs_deltree(rs); in gfs2_adjust_reservation()