X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?p=kvmfornfv.git;a=blobdiff_plain;f=kernel%2Fdrivers%2Fstaging%2Flustre%2Flustre%2Fptlrpc%2Fsec_config.c;h=7ff948fe1424721e3f2dd8590efef8f7c3b7496e;hp=56ba9e4e5297eda5aabc1617c7528e2c29fb8eac;hb=e09b41010ba33a20a87472ee821fa407a5b8da36;hpb=f93b97fd65072de626c074dbe099a1fff05ce060 diff --git a/kernel/drivers/staging/lustre/lustre/ptlrpc/sec_config.c b/kernel/drivers/staging/lustre/lustre/ptlrpc/sec_config.c index 56ba9e4e5..7ff948fe1 100644 --- a/kernel/drivers/staging/lustre/lustre/ptlrpc/sec_config.c +++ b/kernel/drivers/staging/lustre/lustre/ptlrpc/sec_config.c @@ -48,27 +48,6 @@ #include "ptlrpc_internal.h" -const char *sptlrpc_part2name(enum lustre_sec_part part) -{ - switch (part) { - case LUSTRE_SP_CLI: - return "cli"; - case LUSTRE_SP_MDT: - return "mdt"; - case LUSTRE_SP_OST: - return "ost"; - case LUSTRE_SP_MGC: - return "mgc"; - case LUSTRE_SP_MGS: - return "mgs"; - case LUSTRE_SP_ANY: - return "any"; - default: - return "err"; - } -} -EXPORT_SYMBOL(sptlrpc_part2name); - enum lustre_sec_part sptlrpc_target_sec_part(struct obd_device *obd) { const char *type = obd->obd_type->typ_name; @@ -94,8 +73,8 @@ EXPORT_SYMBOL(sptlrpc_target_sec_part); */ int sptlrpc_parse_flavor(const char *str, struct sptlrpc_flavor *flvr) { - char buf[32]; - char *bulk, *alg; + char buf[32]; + char *bulk, *alg; memset(flvr, 0, sizeof(*flvr)); @@ -180,10 +159,10 @@ static void sptlrpc_rule_init(struct sptlrpc_rule *rule) /* * format: network[.direction]=flavor */ -int sptlrpc_parse_rule(char *param, struct sptlrpc_rule *rule) +static int sptlrpc_parse_rule(char *param, struct sptlrpc_rule *rule) { - char *flavor, *dir; - int rc; + char *flavor, *dir; + int rc; sptlrpc_rule_init(rule); @@ -234,25 +213,22 @@ int sptlrpc_parse_rule(char *param, struct sptlrpc_rule *rule) return 0; } -EXPORT_SYMBOL(sptlrpc_parse_rule); -void sptlrpc_rule_set_free(struct sptlrpc_rule_set *rset) +static void sptlrpc_rule_set_free(struct sptlrpc_rule_set *rset) { LASSERT(rset->srs_nslot || (rset->srs_nrule == 0 && rset->srs_rules == NULL)); if (rset->srs_nslot) { - OBD_FREE(rset->srs_rules, - rset->srs_nslot * sizeof(*rset->srs_rules)); + kfree(rset->srs_rules); sptlrpc_rule_set_init(rset); } } -EXPORT_SYMBOL(sptlrpc_rule_set_free); /* * return 0 if the rule set could accommodate one more rule. */ -int sptlrpc_rule_set_expand(struct sptlrpc_rule_set *rset) +static int sptlrpc_rule_set_expand(struct sptlrpc_rule_set *rset) { struct sptlrpc_rule *rules; int nslot; @@ -265,7 +241,7 @@ int sptlrpc_rule_set_expand(struct sptlrpc_rule_set *rset) nslot = rset->srs_nslot + 8; /* better use realloc() if available */ - OBD_ALLOC(rules, nslot * sizeof(*rset->srs_rules)); + rules = kcalloc(nslot, sizeof(*rset->srs_rules), GFP_NOFS); if (rules == NULL) return -ENOMEM; @@ -274,30 +250,31 @@ int sptlrpc_rule_set_expand(struct sptlrpc_rule_set *rset) memcpy(rules, rset->srs_rules, rset->srs_nrule * sizeof(*rset->srs_rules)); - OBD_FREE(rset->srs_rules, - rset->srs_nslot * sizeof(*rset->srs_rules)); + kfree(rset->srs_rules); } rset->srs_rules = rules; rset->srs_nslot = nslot; return 0; } -EXPORT_SYMBOL(sptlrpc_rule_set_expand); static inline int rule_spec_dir(struct sptlrpc_rule *rule) { return (rule->sr_from != LUSTRE_SP_ANY || rule->sr_to != LUSTRE_SP_ANY); } + static inline int rule_spec_net(struct sptlrpc_rule *rule) { return (rule->sr_netid != LNET_NIDNET(LNET_NID_ANY)); } + static inline int rule_match_dir(struct sptlrpc_rule *r1, struct sptlrpc_rule *r2) { return (r1->sr_from == r2->sr_from && r1->sr_to == r2->sr_to); } + static inline int rule_match_net(struct sptlrpc_rule *r1, struct sptlrpc_rule *r2) { @@ -308,12 +285,12 @@ static inline int rule_match_net(struct sptlrpc_rule *r1, * merge @rule into @rset. * the @rset slots might be expanded. */ -int sptlrpc_rule_set_merge(struct sptlrpc_rule_set *rset, - struct sptlrpc_rule *rule) +static int sptlrpc_rule_set_merge(struct sptlrpc_rule_set *rset, + struct sptlrpc_rule *rule) { - struct sptlrpc_rule *p = rset->srs_rules; - int spec_dir, spec_net; - int rc, n, match = 0; + struct sptlrpc_rule *p = rset->srs_rules; + int spec_dir, spec_net; + int rc, n, match = 0; might_sleep(); @@ -393,20 +370,19 @@ int sptlrpc_rule_set_merge(struct sptlrpc_rule_set *rset, return 0; } -EXPORT_SYMBOL(sptlrpc_rule_set_merge); /** * given from/to/nid, determine a matching flavor in ruleset. * return 1 if a match found, otherwise return 0. */ -int sptlrpc_rule_set_choose(struct sptlrpc_rule_set *rset, - enum lustre_sec_part from, - enum lustre_sec_part to, - lnet_nid_t nid, - struct sptlrpc_flavor *sf) +static int sptlrpc_rule_set_choose(struct sptlrpc_rule_set *rset, + enum lustre_sec_part from, + enum lustre_sec_part to, + lnet_nid_t nid, + struct sptlrpc_flavor *sf) { - struct sptlrpc_rule *r; - int n; + struct sptlrpc_rule *r; + int n; for (n = 0; n < rset->srs_nrule; n++) { r = &rset->srs_rules[n]; @@ -430,20 +406,6 @@ int sptlrpc_rule_set_choose(struct sptlrpc_rule_set *rset, return 0; } -EXPORT_SYMBOL(sptlrpc_rule_set_choose); - -void sptlrpc_rule_set_dump(struct sptlrpc_rule_set *rset) -{ - struct sptlrpc_rule *r; - int n; - - for (n = 0; n < rset->srs_nrule; n++) { - r = &rset->srs_rules[n]; - CDEBUG(D_SEC, "<%02d> from %x to %x, net %x, rpc %x\n", n, - r->sr_from, r->sr_to, r->sr_netid, r->sr_flvr.sf_rpc); - } -} -EXPORT_SYMBOL(sptlrpc_rule_set_dump); /********************************** * sptlrpc configuration support * @@ -476,8 +438,8 @@ static inline int is_hex(char c) static void target2fsname(const char *tgt, char *fsname, int buflen) { - const char *ptr; - int len; + const char *ptr; + int len; ptr = strrchr(tgt, '-'); if (ptr) { @@ -509,7 +471,7 @@ static void sptlrpc_conf_free_rsets(struct sptlrpc_conf *conf) &conf->sc_tgts, sct_list) { sptlrpc_rule_set_free(&conf_tgt->sct_rset); list_del(&conf_tgt->sct_list); - OBD_FREE_PTR(conf_tgt); + kfree(conf_tgt); } LASSERT(list_empty(&conf->sc_tgts)); @@ -523,7 +485,7 @@ static void sptlrpc_conf_free(struct sptlrpc_conf *conf) sptlrpc_conf_free_rsets(conf); list_del(&conf->sc_list); - OBD_FREE_PTR(conf); + kfree(conf); } static @@ -541,7 +503,7 @@ struct sptlrpc_conf_tgt *sptlrpc_conf_get_tgt(struct sptlrpc_conf *conf, if (!create) return NULL; - OBD_ALLOC_PTR(conf_tgt); + conf_tgt = kzalloc(sizeof(*conf_tgt), GFP_NOFS); if (conf_tgt) { strlcpy(conf_tgt->sct_name, name, sizeof(conf_tgt->sct_name)); sptlrpc_rule_set_init(&conf_tgt->sct_rset); @@ -565,8 +527,8 @@ struct sptlrpc_conf *sptlrpc_conf_get(const char *fsname, if (!create) return NULL; - OBD_ALLOC_PTR(conf); - if (conf == NULL) + conf = kzalloc(sizeof(*conf), GFP_NOFS); + if (!conf) return NULL; strcpy(conf->sc_fsname, fsname); @@ -585,8 +547,8 @@ static int sptlrpc_conf_merge_rule(struct sptlrpc_conf *conf, const char *target, struct sptlrpc_rule *rule) { - struct sptlrpc_conf_tgt *conf_tgt; - struct sptlrpc_rule_set *rule_set; + struct sptlrpc_conf_tgt *conf_tgt; + struct sptlrpc_rule_set *rule_set; /* fsname == target means general rules for the whole fs */ if (strcmp(conf->sc_fsname, target) == 0) { @@ -612,10 +574,10 @@ static int sptlrpc_conf_merge_rule(struct sptlrpc_conf *conf, static int __sptlrpc_process_config(struct lustre_cfg *lcfg, struct sptlrpc_conf *conf) { - char *target, *param; - char fsname[MTI_NAME_MAXLEN]; - struct sptlrpc_rule rule; - int rc; + char *target, *param; + char fsname[MTI_NAME_MAXLEN]; + struct sptlrpc_rule rule; + int rc; target = lustre_cfg_string(lcfg, 1); if (target == NULL) { @@ -673,8 +635,8 @@ EXPORT_SYMBOL(sptlrpc_process_config); static int logname2fsname(const char *logname, char *buf, int buflen) { - char *ptr; - int len; + char *ptr; + int len; ptr = strrchr(logname, '-'); if (ptr == NULL || strcmp(ptr, "-sptlrpc")) { @@ -692,7 +654,7 @@ static int logname2fsname(const char *logname, char *buf, int buflen) void sptlrpc_conf_log_update_begin(const char *logname) { struct sptlrpc_conf *conf; - char fsname[16]; + char fsname[16]; if (logname2fsname(logname, fsname, sizeof(fsname))) return; @@ -718,7 +680,7 @@ EXPORT_SYMBOL(sptlrpc_conf_log_update_begin); void sptlrpc_conf_log_update_end(const char *logname) { struct sptlrpc_conf *conf; - char fsname[16]; + char fsname[16]; if (logname2fsname(logname, fsname, sizeof(fsname))) return; @@ -743,7 +705,7 @@ EXPORT_SYMBOL(sptlrpc_conf_log_update_end); void sptlrpc_conf_log_start(const char *logname) { - char fsname[16]; + char fsname[16]; if (logname2fsname(logname, fsname, sizeof(fsname))) return; @@ -757,7 +719,7 @@ EXPORT_SYMBOL(sptlrpc_conf_log_start); void sptlrpc_conf_log_stop(const char *logname) { struct sptlrpc_conf *conf; - char fsname[16]; + char fsname[16]; if (logname2fsname(logname, fsname, sizeof(fsname))) return; @@ -801,10 +763,10 @@ void sptlrpc_conf_choose_flavor(enum lustre_sec_part from, lnet_nid_t nid, struct sptlrpc_flavor *sf) { - struct sptlrpc_conf *conf; + struct sptlrpc_conf *conf; struct sptlrpc_conf_tgt *conf_tgt; - char name[MTI_NAME_MAXLEN]; - int len, rc = 0; + char name[MTI_NAME_MAXLEN]; + int len, rc = 0; target2fsname(target->uuid, name, sizeof(name)); @@ -838,20 +800,6 @@ out: flavor_set_flags(sf, from, to, 1); } -/** - * called by target devices, determine the expected flavor from - * certain peer (from, nid). - */ -void sptlrpc_target_choose_flavor(struct sptlrpc_rule_set *rset, - enum lustre_sec_part from, - lnet_nid_t nid, - struct sptlrpc_flavor *sf) -{ - if (sptlrpc_rule_set_choose(rset, from, LUSTRE_SP_ANY, nid, sf) == 0) - get_default_flavor(sf); -} -EXPORT_SYMBOL(sptlrpc_target_choose_flavor); - #define SEC_ADAPT_DELAY (10) /** @@ -860,7 +808,7 @@ EXPORT_SYMBOL(sptlrpc_target_choose_flavor); */ void sptlrpc_conf_client_adapt(struct obd_device *obd) { - struct obd_import *imp; + struct obd_import *imp; LASSERT(strcmp(obd->obd_type->typ_name, LUSTRE_MDC_NAME) == 0 || strcmp(obd->obd_type->typ_name, LUSTRE_OSC_NAME) == 0); @@ -873,7 +821,7 @@ void sptlrpc_conf_client_adapt(struct obd_device *obd) if (imp) { spin_lock(&imp->imp_lock); if (imp->imp_sec) - imp->imp_sec_expire = get_seconds() + + imp->imp_sec_expire = ktime_get_real_seconds() + SEC_ADAPT_DELAY; spin_unlock(&imp->imp_lock); } @@ -882,7 +830,7 @@ void sptlrpc_conf_client_adapt(struct obd_device *obd) } EXPORT_SYMBOL(sptlrpc_conf_client_adapt); -int sptlrpc_conf_init(void) +int sptlrpc_conf_init(void) { mutex_init(&sptlrpc_conf_lock); return 0; @@ -890,7 +838,7 @@ int sptlrpc_conf_init(void) void sptlrpc_conf_fini(void) { - struct sptlrpc_conf *conf, *conf_next; + struct sptlrpc_conf *conf, *conf_next; mutex_lock(&sptlrpc_conf_lock); list_for_each_entry_safe(conf, conf_next, &sptlrpc_confs, sc_list) {