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