void VDI_RecycleFd(struct vbc **vbp) { struct backend *bp; struct vbc *vc; AN(vbp); vc = *vbp; *vbp = NULL; CHECK_OBJ_NOTNULL(vc, VBC_MAGIC); CHECK_OBJ_NOTNULL(vc->backend, BACKEND_MAGIC); assert(vc->fd >= 0); bp = vc->backend; VSLb(vc->vsl, SLT_BackendReuse, "%s", bp->display_name); /* XXX: revisit this hack */ VSL_Flush(vc->vsl, 0); vc->vsl = NULL; Lck_Lock(&bp->mtx); VSC_C_main->backend_recycle++; VTAILQ_INSERT_HEAD(&bp->connlist, vc, list); VBE_DropRefLocked(bp); }
void VDI_RecycleFd(struct worker *wrk, struct vbc **vbp) { struct backend *bp; struct vbc *vc; CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); AN(vbp); vc = *vbp; *vbp = NULL; CHECK_OBJ_NOTNULL(vc, VBC_MAGIC); CHECK_OBJ_NOTNULL(vc->backend, BACKEND_MAGIC); assert(vc->fd >= 0); bp = vc->backend; WSL(wrk, SLT_BackendReuse, vc->vsl_id, "%s", bp->display_name); /* * Flush the shmlog, so that another session reusing this backend * will log chronologically later than our use of it. */ WSL_Flush(wrk, 0); Lck_Lock(&bp->mtx); VSC_C_main->backend_recycle++; VTAILQ_INSERT_HEAD(&bp->connlist, vc, list); VBE_DropRefLocked(bp); }
void VBE_RecycleFd(struct sess *sp) { struct backend *bp; CHECK_OBJ_NOTNULL(sp->vbe, VBE_CONN_MAGIC); CHECK_OBJ_NOTNULL(sp->vbe->backend, BACKEND_MAGIC); assert(sp->vbe->fd >= 0); bp = sp->vbe->backend; WSL(sp->wrk, SLT_BackendReuse, sp->vbe->fd, "%s", bp->vcl_name); Lck_Lock(&bp->mtx); VSL_stats->backend_recycle++; VTAILQ_INSERT_HEAD(&bp->connlist, sp->vbe, list); sp->vbe = NULL; VBE_DropRefLocked(bp); }
static void vbe_RecycleFd(struct vbc **vbp, const struct acct_bereq *acct_bereq) { struct backend *bp; struct vbc *vc; AN(vbp); vc = *vbp; *vbp = NULL; CHECK_OBJ_NOTNULL(vc, VBC_MAGIC); CHECK_OBJ_NOTNULL(vc->backend, BACKEND_MAGIC); assert(vc->fd >= 0); bp = vc->backend; VSLb(vc->vsl, SLT_BackendReuse, "%d %s", vc->fd, bp->display_name); vc->vsl = NULL; Lck_Lock(&bp->mtx); VSC_C_main->backend_recycle++; VTAILQ_INSERT_HEAD(&bp->connlist, vc, list); VBE_DropRefLocked(bp, acct_bereq); }