+ if (strncmp(tgt, "-osc", 4) == 0) {
+ /* Old OSC name fsname-OSTXXXX-osc */
+ for (tgt--; tgt > src && *tgt != '-'; tgt--)
+ ;
+ if (tgt == src) {
+ CERROR("%s: invalid target name %s\n",
+ m->opd_obd->obd_name, lustre_cfg_string(cfg, 0));
+ RETURN(-EINVAL);
+ }
+
+ if (strncmp(tgt, "-OST", 4) != 0) {
+ CERROR("%s: invalid target name %s\n",
+ m->opd_obd->obd_name, lustre_cfg_string(cfg, 0));
+ RETURN(-EINVAL);
+ }
+
+ idx = simple_strtol(tgt + 4, &mdt, 16);
+ if (mdt[0] != '-' || idx > INT_MAX || idx < 0) {
+ CERROR("%s: invalid OST index in '%s'\n",
+ m->opd_obd->obd_name, src);
+ RETURN(-EINVAL);
+ }
+ m->opd_index = idx;
+ idx = tgt - src;
+ } else {
+ /* New OSC name fsname-OSTXXXX-osc-MDTXXXX */
+ if (strncmp(tgt, "-MDT", 4) != 0 &&
+ strncmp(tgt, "-OST", 4) != 0) {
+ CERROR("%s: invalid target name %s\n",
+ m->opd_obd->obd_name, lustre_cfg_string(cfg, 0));
+ RETURN(-EINVAL);
+ }
+
+ if (tgt - src <= 12) {
+ CERROR("%s: invalid target name %s\n",
+ m->opd_obd->obd_name, lustre_cfg_string(cfg, 0));
+ RETURN(-EINVAL);
+ }
+
+ if (strncmp(tgt - 12, "-MDT", 4) == 0)
+ m->opd_connect_mdt = 1;
+
+ idx = simple_strtol(tgt - 8, &mdt, 16);
+ if (mdt[0] != '-' || idx > INT_MAX || idx < 0) {
+ CERROR("%s: invalid OST index in '%s'\n",
+ m->opd_obd->obd_name, src);
+ RETURN(-EINVAL);
+ }
+
+ m->opd_index = idx;
+ idx = tgt - src - 12;
+ }