}
if (is_container(content->array.level)) {
- sysfs_rules_apply(mddev, content);
+ sysfs_rules_apply(mddev, content, st);
if (c->verbose >= 0) {
pr_err("Container %s has been assembled with %d drive%s",
mddev, okcnt + sparecnt + journalcnt,
rv = ioctl(mdfd, RUN_ARRAY, NULL);
reopen_mddev(mdfd); /* drop O_EXCL */
if (rv == 0) {
- sysfs_rules_apply(mddev, content);
+ sysfs_rules_apply(mddev, content, st);
if (c->verbose >= 0) {
pr_info("%s has been started with %d drive%s",
mddev, okcnt, okcnt==1?"":"s");
else {
set_array_assembly_status(c, result, INCR_YES, &array);
wait_for(chosen_name, mdfd);
- sysfs_rules_apply(chosen_name, content);
+ sysfs_rules_apply(chosen_name, content, st);
}
return err;
pr_err("container %s now has %d device%s\n",
chosen_name, info.array.working_disks,
info.array.working_disks == 1?"":"s");
- sysfs_rules_apply(chosen_name, &info);
+ sysfs_rules_apply(chosen_name, &info, st);
wait_for(chosen_name, mdfd);
if (st->ss->external)
strcpy(devnm, fd2devnm(mdfd));
extern void policy_save_path(char *id_path, struct map_ent *array);
extern int policy_check_path(struct mdinfo *disk, struct map_ent *array);
-extern void sysfs_rules_apply(char *devnm, struct mdinfo *dev);
+extern void sysfs_rules_apply(char *devnm, struct mdinfo *dev, const struct supertype *st);
extern void sysfsline(char *line);
#if __GNUC__ < 3
static struct dev_sysfs_rule *sysfs_rules;
-void sysfs_rules_apply(char *devnm, struct mdinfo *dev)
+void sysfs_rules_apply(char *devnm, struct mdinfo *dev, const struct supertype *st)
{
struct dev_sysfs_rule *rules = sysfs_rules;
if (rules->devname)
match = strcmp(devnm, rules->devname) == 0;
} else {
- match = memcmp(dev->uuid, rules->uuid,
- sizeof(int[4])) == 0;
+ match = same_uuid(dev->uuid, rules->uuid, st->ss->swapuuid);
}
-
while (match && ent) {
if (sysfs_rules_apply_check(dev, ent) < 0)
pr_err("SYSFS: failed to write '%s' to '%s'\n",