extern int select_pgpolicy (struct multipath * mp) { char pgpolicy_name[POLICY_NAME_SIZE]; if (conf->pgpolicy_flag > 0) { mp->pgpolicy = conf->pgpolicy_flag; mp->pgpolicyfn = pgpolicies[mp->pgpolicy]; get_pgpolicy_name(pgpolicy_name, POLICY_NAME_SIZE, mp->pgpolicy); condlog(3, "%s: pgpolicy = %s (cmd line flag)", mp->alias, pgpolicy_name); return 0; } if (mp->mpe && mp->mpe->pgpolicy > 0) { mp->pgpolicy = mp->mpe->pgpolicy; mp->pgpolicyfn = pgpolicies[mp->pgpolicy]; get_pgpolicy_name(pgpolicy_name, POLICY_NAME_SIZE, mp->pgpolicy); condlog(3, "%s: pgpolicy = %s (LUN setting)", mp->alias, pgpolicy_name); return 0; } if (mp->hwe && mp->hwe->pgpolicy > 0) { mp->pgpolicy = mp->hwe->pgpolicy; mp->pgpolicyfn = pgpolicies[mp->pgpolicy]; get_pgpolicy_name(pgpolicy_name, POLICY_NAME_SIZE, mp->pgpolicy); condlog(3, "%s: pgpolicy = %s (controller setting)", mp->alias, pgpolicy_name); return 0; } if (conf->pgpolicy > 0) { mp->pgpolicy = conf->pgpolicy; mp->pgpolicyfn = pgpolicies[mp->pgpolicy]; get_pgpolicy_name(pgpolicy_name, POLICY_NAME_SIZE, mp->pgpolicy); condlog(3, "%s: pgpolicy = %s (config file default)", mp->alias, pgpolicy_name); return 0; } mp->pgpolicy = DEFAULT_PGPOLICY; mp->pgpolicyfn = pgpolicies[mp->pgpolicy]; get_pgpolicy_name(pgpolicy_name, POLICY_NAME_SIZE, mp->pgpolicy); condlog(3, "%s: pgpolicy = %s (internal default)", mp->alias, pgpolicy_name); return 0; }
static int snprint_mp_path_grouping_policy (char * buff, int len, void * data) { struct mpentry * mpe = (struct mpentry *)data; char str[POLICY_NAME_SIZE]; if (!mpe->pgpolicy) return 0; get_pgpolicy_name(str, POLICY_NAME_SIZE, mpe->pgpolicy); return snprintf(buff, len, "%s", str); }
int print_pgpolicy(char * buff, int len, void *ptr) { char str[POLICY_NAME_SIZE]; int pgpolicy = *(int *)ptr; if (!pgpolicy) return 0; get_pgpolicy_name(str, POLICY_NAME_SIZE, pgpolicy); return snprintf(buff, len, "\"%s\"", str); }
static int snprint_def_path_grouping_policy (char * buff, int len, void * data) { char str[POLICY_NAME_SIZE]; if (!conf->pgpolicy) return 0; if (conf->pgpolicy == DEFAULT_PGPOLICY) return 0; get_pgpolicy_name(str, POLICY_NAME_SIZE, conf->pgpolicy); return snprintf(buff, len, "%s", str); }
static int snprint_hw_path_grouping_policy (char * buff, int len, void * data) { struct hwentry * hwe = (struct hwentry *)data; char str[POLICY_NAME_SIZE]; if (!hwe->pgpolicy) return 0; if (hwe->pgpolicy == conf->pgpolicy) return 0; get_pgpolicy_name(str, POLICY_NAME_SIZE, hwe->pgpolicy); return snprintf(buff, len, "%s", str); }
int select_pgpolicy(struct config *conf, struct multipath * mp) { char *origin, buff[POLICY_NAME_SIZE]; if (conf->pgpolicy_flag > 0) { mp->pgpolicy = conf->pgpolicy_flag; origin = "(cmd line flag)"; goto out; } mp_set_mpe(pgpolicy); mp_set_ovr(pgpolicy); mp_set_hwe(pgpolicy); mp_set_conf(pgpolicy); mp_set_default(pgpolicy, DEFAULT_PGPOLICY); out: mp->pgpolicyfn = pgpolicies[mp->pgpolicy]; get_pgpolicy_name(buff, POLICY_NAME_SIZE, mp->pgpolicy); condlog(3, "%s: path_grouping_policy = %s %s", mp->alias, buff, origin); return 0; }