Lines Matching refs:softc

54 fha_init(struct fha_params *softc)  in fha_init()  argument
60 mtx_init(&softc->fha_hash[i].mtx, "fhalock", NULL, MTX_DEF); in fha_init()
65 softc->ctls.enable = FHA_DEF_ENABLE; in fha_init()
66 softc->ctls.bin_shift = FHA_DEF_BIN_SHIFT; in fha_init()
67 softc->ctls.max_nfsds_per_fh = FHA_DEF_MAX_NFSDS_PER_FH; in fha_init()
68 softc->ctls.max_reqs_per_nfsd = FHA_DEF_MAX_REQS_PER_NFSD; in fha_init()
75 softc->server_name); in fha_init()
76 TUNABLE_INT_FETCH(tmpstr, &softc->ctls.enable); in fha_init()
78 softc->server_name); in fha_init()
79 TUNABLE_INT_FETCH(tmpstr, &softc->ctls.bin_shift); in fha_init()
81 softc->server_name); in fha_init()
82 TUNABLE_INT_FETCH(tmpstr, &softc->ctls.max_nfsds_per_fh); in fha_init()
84 softc->server_name); in fha_init()
85 TUNABLE_INT_FETCH(tmpstr, &softc->ctls.max_reqs_per_nfsd); in fha_init()
91 SYSCTL_ADD_UINT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), in fha_init()
93 &softc->ctls.enable, 0, "Enable NFS File Handle Affinity (FHA)"); in fha_init()
95 SYSCTL_ADD_UINT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), in fha_init()
97 &softc->ctls.bin_shift, 0, "For FHA reads, no two requests will " in fha_init()
100 SYSCTL_ADD_UINT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), in fha_init()
102 &softc->ctls.max_nfsds_per_fh, 0, "Maximum nfsd threads that " in fha_init()
105 SYSCTL_ADD_UINT(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), in fha_init()
107 &softc->ctls.max_reqs_per_nfsd, 0, "Maximum requests that " in fha_init()
110 SYSCTL_ADD_OID(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree), in fha_init()
112 softc->callbacks.fhe_stats_sysctl, "A", ""); in fha_init()
117 fha_uninit(struct fha_params *softc) in fha_uninit() argument
121 sysctl_ctx_free(&softc->sysctl_ctx); in fha_uninit()
123 mtx_destroy(&softc->fha_hash[i].mtx); in fha_uninit()
232 fha_hash_entry_lookup(struct fha_params *softc, u_int64_t fh) in fha_hash_entry_lookup() argument
238 pool = *softc->pool; in fha_hash_entry_lookup()
239 fhs = &softc->fha_hash[fh % FHA_HASH_SIZE]; in fha_hash_entry_lookup()
294 fha_hash_entry_choose_thread(struct fha_params *softc, in fha_hash_entry_choose_thread() argument
302 pool = *softc->pool; in fha_hash_entry_choose_thread()
324 && ((offset1 - offset2) < (1 << softc->ctls.bin_shift))) in fha_hash_entry_choose_thread()
326 && ((offset2 - offset1) < (1 << softc->ctls.bin_shift)))) { in fha_hash_entry_choose_thread()
327 if ((softc->ctls.max_reqs_per_nfsd == 0) || in fha_hash_entry_choose_thread()
328 (req_count < softc->ctls.max_reqs_per_nfsd)) { in fha_hash_entry_choose_thread()
357 if ((softc->ctls.max_nfsds_per_fh == 0) || in fha_hash_entry_choose_thread()
358 (fhe->num_threads < softc->ctls.max_nfsds_per_fh)) { in fha_hash_entry_choose_thread()
382 struct fha_params *softc) in fha_assign() argument
389 cb = &softc->callbacks; in fha_assign()
392 if (softc->ctls.enable == 0) in fha_assign()
410 fhe = fha_hash_entry_lookup(softc, i.fh); in fha_assign()
419 thread = fha_hash_entry_choose_thread(softc, fhe, &i, this_thread); in fha_assign()
471 fhe_stats_sysctl(SYSCTL_HANDLER_ARGS, struct fha_params *softc) in fhe_stats_sysctl() argument
484 if (!*softc->pool) { in fhe_stats_sysctl()
488 pool = *softc->pool; in fhe_stats_sysctl()
491 if (!LIST_EMPTY(&softc->fha_hash[i].list)) in fhe_stats_sysctl()
501 mtx_lock(&softc->fha_hash[i].mtx); in fhe_stats_sysctl()
502 if (LIST_EMPTY(&softc->fha_hash[i].list)) { in fhe_stats_sysctl()
503 mtx_unlock(&softc->fha_hash[i].mtx); in fhe_stats_sysctl()
508 LIST_FOREACH(fhe, &softc->fha_hash[i].list, link) { in fhe_stats_sysctl()
526 mtx_unlock(&softc->fha_hash[i].mtx); in fhe_stats_sysctl()