/* TODO: add support for escaped characters */
*str = skip_spaces(*str);
s = strchr(*str, separator); /* Delimit the field and remove trailing spaces */ if (s)
*s = '\0';
*str = strim(*str); return s ? ++s : NULL;
}
field[0] = str; /* Delimit first 3 fields that are separated by space */ for (i = 0; i < ARRAY_SIZE(field) - 1; i++) {
field[i + 1] = str_field_delimit(&field[i], ' '); if (!field[i + 1]) return ERR_PTR(-EINVAL);
} /* Delimit last field that can be terminated by comma */
next = str_field_delimit(&field[i], ',');
field[0] = str; /* Delimit first 4 fields that are separated by comma */ for (i = 0; i < ARRAY_SIZE(field) - 1; i++) {
field[i+1] = str_field_delimit(&field[i], ','); if (!field[i+1]) return ERR_PTR(-EINVAL);
} /* Delimit last field that can be delimited by semi-colon */
next = str_field_delimit(&field[i], ';');
/* name */
strscpy(dev->dmi.name, field[0], sizeof(dev->dmi.name)); /* uuid */
strscpy(dev->dmi.uuid, field[1], sizeof(dev->dmi.uuid)); /* minor */ if (strlen(field[2])) { if (kstrtoull(field[2], 0, &dev->dmi.dev) ||
dev->dmi.dev >= (1 << MINORBITS)) return ERR_PTR(-EINVAL);
dev->dmi.dev = huge_encode_dev((dev_t)dev->dmi.dev);
dev->dmi.flags |= DM_PERSISTENT_DEV_FLAG;
} /* flags */ if (!strcmp(field[3], "ro"))
dev->dmi.flags |= DM_READONLY_FLAG; elseif (strcmp(field[3], "rw")) return ERR_PTR(-EINVAL); /* table */ if (dm_parse_table(dev, field[4])) return ERR_PTR(-EINVAL);
/** *dm_init_init-parse"dm-mod.create="argumentandconfiguredrivers
*/ staticint __init dm_init_init(void)
{ struct dm_device *dev;
LIST_HEAD(devices); char *str; int i, r;
if (!create) return0;
if (strlen(create) >= DM_MAX_STR_SIZE) {
DMERR("Argument is too big. Limit is %d", DM_MAX_STR_SIZE); return -EINVAL;
}
str = kstrndup(create, DM_MAX_STR_SIZE, GFP_KERNEL); if (!str) return -ENOMEM;
r = dm_parse_devices(&devices, str); if (r) goto out;
DMINFO("waiting for all devices to be available before creating mapped devices");
wait_for_device_probe();
for (i = 0; i < ARRAY_SIZE(waitfor); i++) { if (waitfor[i]) {
dev_t dev;
DMINFO("waiting for device %s ...", waitfor[i]); while (early_lookup_bdev(waitfor[i], &dev))
fsleep(5000);
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.