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 struct gfs2_bitmap *bi = rbm_bi(&rs->rs_rbm); in __rs_deltree()
651 BUG_ON(rs->rs_rbm.rgd->rd_reserved < rs->rs_free); in __rs_deltree()
652 rs->rs_rbm.rgd->rd_reserved -= rs->rs_free; in __rs_deltree()
657 rgd->rd_extfail_pt += rs->rs_free; in __rs_deltree()
658 rs->rs_free = 0; in __rs_deltree()
668 void gfs2_rs_deltree(struct gfs2_blkreserv *rs) in gfs2_rs_deltree() argument
672 rgd = rs->rs_rbm.rgd; in gfs2_rs_deltree()
675 __rs_deltree(rs); in gfs2_rs_deltree()
709 struct gfs2_blkreserv *rs; in return_all_reservations() local
713 rs = rb_entry(n, struct gfs2_blkreserv, rs_node); in return_all_reservations()
714 __rs_deltree(rs); in return_all_reservations()
1459 struct gfs2_blkreserv *rs = ip->i_res; in rs_insert() local
1460 struct gfs2_rgrpd *rgd = rs->rs_rbm.rgd; in rs_insert()
1461 u64 fsblock = gfs2_rbm_to_block(&rs->rs_rbm); in rs_insert()
1463 BUG_ON(gfs2_rs_active(rs)); in rs_insert()
1472 rc = rs_cmp(fsblock, rs->rs_free, cur); in rs_insert()
1484 rb_link_node(&rs->rs_node, parent, newn); in rs_insert()
1485 rb_insert_color(&rs->rs_node, &rgd->rd_rstree); in rs_insert()
1488 rgd->rd_reserved += rs->rs_free; /* blocks reserved */ in rs_insert()
1490 trace_gfs2_rs(rs, TRACE_RS_INSERT); in rs_insert()
1506 struct gfs2_blkreserv *rs = ip->i_res; in rg_mblk_search() local
1515 extlen = max_t(u32, atomic_read(&rs->rs_sizehint), ap->target); in rg_mblk_search()
1532 rs->rs_rbm = rbm; in rg_mblk_search()
1533 rs->rs_free = extlen; in rg_mblk_search()
1534 rs->rs_inum = ip->i_no_addr; in rg_mblk_search()
1559 struct gfs2_blkreserv *rs; in gfs2_next_unreserved_block() local
1566 rs = rb_entry(n, struct gfs2_blkreserv, rs_node); in gfs2_next_unreserved_block()
1567 rc = rs_cmp(block, length, rs); in gfs2_next_unreserved_block()
1577 while ((rs_cmp(block, length, rs) == 0) && (ip->i_res != rs)) { in gfs2_next_unreserved_block()
1578 block = gfs2_rbm_to_block(&rs->rs_rbm) + rs->rs_free; in gfs2_next_unreserved_block()
1582 rs = rb_entry(n, struct gfs2_blkreserv, rs_node); in gfs2_next_unreserved_block()
1914 static bool gfs2_rgrp_used_recently(const struct gfs2_blkreserv *rs, in gfs2_rgrp_used_recently() argument
1920 rs->rs_rbm.rgd->rd_gl->gl_dstamp)); in gfs2_rgrp_used_recently()
1987 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_reserve() local
1997 if (gfs2_rs_active(rs)) { in gfs2_inplace_reserve()
1998 begin = rs->rs_rbm.rgd; in gfs2_inplace_reserve()
2000 rs->rs_rbm.rgd = begin = ip->i_rgd; in gfs2_inplace_reserve()
2003 rs->rs_rbm.rgd = begin = gfs2_blk2rgrpd(sdp, ip->i_goal, 1); in gfs2_inplace_reserve()
2007 if (rs->rs_rbm.rgd == NULL) in gfs2_inplace_reserve()
2013 if (!gfs2_glock_is_locked_by_me(rs->rs_rbm.rgd->rd_gl)) { in gfs2_inplace_reserve()
2017 if (!gfs2_rs_active(rs)) { in gfs2_inplace_reserve()
2019 !fast_to_acquire(rs->rs_rbm.rgd)) in gfs2_inplace_reserve()
2022 gfs2_rgrp_used_recently(rs, 1000) && in gfs2_inplace_reserve()
2023 gfs2_rgrp_congested(rs->rs_rbm.rgd, loops)) in gfs2_inplace_reserve()
2026 error = gfs2_glock_nq_init(rs->rs_rbm.rgd->rd_gl, in gfs2_inplace_reserve()
2028 &rs->rs_rgd_gh); in gfs2_inplace_reserve()
2031 if (!gfs2_rs_active(rs) && (loops < 2) && in gfs2_inplace_reserve()
2032 gfs2_rgrp_congested(rs->rs_rbm.rgd, loops)) in gfs2_inplace_reserve()
2035 error = update_rgrp_lvb(rs->rs_rbm.rgd); in gfs2_inplace_reserve()
2037 gfs2_glock_dq_uninit(&rs->rs_rgd_gh); in gfs2_inplace_reserve()
2044 if ((rs->rs_rbm.rgd->rd_flags & (GFS2_RGF_NOALLOC | in gfs2_inplace_reserve()
2046 (loops == 0 && ap->target > rs->rs_rbm.rgd->rd_extfail_pt)) in gfs2_inplace_reserve()
2050 gfs2_rgrp_bh_get(rs->rs_rbm.rgd); in gfs2_inplace_reserve()
2053 if (!gfs2_rs_active(rs)) in gfs2_inplace_reserve()
2054 rg_mblk_search(rs->rs_rbm.rgd, ip, ap); in gfs2_inplace_reserve()
2057 if (!gfs2_rs_active(rs) && (loops < 1)) in gfs2_inplace_reserve()
2061 if (rs->rs_rbm.rgd->rd_free_clone >= ap->target || in gfs2_inplace_reserve()
2063 rs->rs_rbm.rgd->rd_free_clone >= ap->min_target)) { in gfs2_inplace_reserve()
2064 ip->i_rgd = rs->rs_rbm.rgd; in gfs2_inplace_reserve()
2070 if (rs->rs_rbm.rgd->rd_flags & GFS2_RDF_CHECK) in gfs2_inplace_reserve()
2071 try_rgrp_unlink(rs->rs_rbm.rgd, &last_unlinked, in gfs2_inplace_reserve()
2075 if (gfs2_rs_active(rs)) in gfs2_inplace_reserve()
2076 gfs2_rs_deltree(rs); in gfs2_inplace_reserve()
2080 gfs2_glock_dq_uninit(&rs->rs_rgd_gh); in gfs2_inplace_reserve()
2083 if (gfs2_select_rgrp(&rs->rs_rbm.rgd, begin)) in gfs2_inplace_reserve()
2116 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_inplace_release() local
2118 if (rs->rs_rgd_gh.gh_gl) in gfs2_inplace_release()
2119 gfs2_glock_dq_uninit(&rs->rs_rgd_gh); in gfs2_inplace_release()
2270 struct gfs2_blkreserv *rs = ip->i_res; in gfs2_adjust_reservation() local
2277 if (gfs2_rs_active(rs)) { in gfs2_adjust_reservation()
2278 if (gfs2_rbm_eq(&rs->rs_rbm, rbm)) { in gfs2_adjust_reservation()
2280 ret = gfs2_rbm_from_block(&rs->rs_rbm, block + len); in gfs2_adjust_reservation()
2281 rlen = min(rs->rs_free, len); in gfs2_adjust_reservation()
2282 rs->rs_free -= rlen; in gfs2_adjust_reservation()
2284 trace_gfs2_rs(rs, TRACE_RS_CLAIM); in gfs2_adjust_reservation()
2285 if (rs->rs_free && !ret) in gfs2_adjust_reservation()
2289 atomic_add(RGRP_RSRV_ADDBLKS, &rs->rs_sizehint); in gfs2_adjust_reservation()
2291 __rs_deltree(rs); in gfs2_adjust_reservation()