void slab_cache_init(void) { size_t nbuf; psc_assert(SLASH_SLVR_SIZE <= LNET_MTU); if (slcfg_local->cfg_slab_cache_size < SLAB_CACHE_MIN) psc_fatalx("invalid slab_cache_size setting; " "minimum allowed is %zu", SLAB_CACHE_MIN); nbuf = slcfg_local->cfg_slab_cache_size / SLASH_SLVR_SIZE; psc_poolmaster_init(&slab_poolmaster, struct slab, slb_mgmt_lentry, PPMF_AUTO, nbuf, nbuf, nbuf, slab_cache_reap, "slab", NULL); slab_pool = psc_poolmaster_getmgr(&slab_poolmaster); pscthr_init(SLITHRT_BREAP, slibreapthr_main, 0, "slibreapthr"); }
if (rc) bmap_op_done(b); else *bp = b; } return (rc); } void bmap_cache_init(size_t priv_size, int count) { _psc_poolmaster_init(&bmap_poolmaster, sizeof(struct bmap) + priv_size, offsetof(struct bmap, bcm_lentry), PPMF_AUTO, count, count, 0, NULL, NULL, "bmap"); bmap_pool = psc_poolmaster_getmgr(&bmap_poolmaster); } void bmap_cache_destroy(void) { pfl_poolmaster_destroy(&bmap_poolmaster); } int bmapdesc_access_check(struct srt_bmapdesc *sbd, enum rw rw, sl_ios_id_t ios_id) { psc_assert(rw == SL_READ || rw == SL_WRITE); if (rw == SL_READ) { /* Read requests can get by with looser authentication. */
pll_init(&fci->fci_dc_pages, struct dircache_page, dcp_lentry, &d->fcmh_lock); pfl_rwlock_init(&fci->fcid_dircache_rwlock); } /* * Initialize global dircache structures. */ void dircache_mgr_init(void) { psc_poolmaster_init(&dircache_page_poolmaster, struct dircache_page, dcp_lentry, PPMF_AUTO, DIRCACHE_NPAGES, DIRCACHE_NPAGES, 0, NULL, "dircachepg"); dircache_page_pool = psc_poolmaster_getmgr( &dircache_page_poolmaster); psc_poolmaster_init(&dircache_ent_poolmaster, struct dircache_ent, dce_lentry, PPMF_AUTO, DIRCACHE_NPAGES, DIRCACHE_NPAGES, 0, NULL, "dircachent"); dircache_ent_pool = psc_poolmaster_getmgr( &dircache_ent_poolmaster); } void dircache_mgr_destroy(void) { pfl_poolmaster_destroy(&dircache_page_poolmaster); pfl_poolmaster_destroy(&dircache_ent_poolmaster); }