mirror of
git://sourceware.org/git/lvm2.git
synced 2025-02-25 21:57:45 +03:00
fix: regression for recent persistent commit
Do not let fly metadata with just 'minor' set (since they would not be readable on older version) Be permissive with invalid major/minor number and just report them as problem, but allow to use such metadata with default major:minor.
This commit is contained in:
parent
18b8fdc8c9
commit
392bb6f46e
@ -678,16 +678,19 @@ static int _read_lvsegs(struct format_instance *fid,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!_read_int32(lvn, "major", &lv->major)) {
|
||||
log_error("Couldn't read major number for logical "
|
||||
"volume %s.", lv->name);
|
||||
return 0;
|
||||
if (!dm_config_has_node(lvn, "major"))
|
||||
/* If major is missing, pick default */
|
||||
lv->major = vg->cmd->dev_types->device_mapper_major;
|
||||
else if (!_read_int32(lvn, "major", &lv->major)) {
|
||||
log_warn("WARNING: Couldn't read major number for logical "
|
||||
"volume %s.", lv->name);
|
||||
lv->major = vg->cmd->dev_types->device_mapper_major;
|
||||
}
|
||||
|
||||
if (!validate_major_minor(vg->cmd, fid->fmt, lv->major, lv->minor)) {
|
||||
log_error("Logical volume %s does not have a valid major, minor number.",
|
||||
lv->name);
|
||||
return 0;
|
||||
log_warn("WARNING: Ignoring invalid major, minor number for "
|
||||
"logical volume %s.", lv->name);
|
||||
lv->major = lv->minor = -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -607,11 +607,13 @@ int read_and_validate_major_minor(const struct cmd_context *cmd,
|
||||
return 0;
|
||||
}
|
||||
*major = arg_int_value(cmd, major_ARG, -1);
|
||||
} else if (arg_is_set(cmd, major_ARG)) {
|
||||
log_warn("WARNING: Ignoring supplied major number - "
|
||||
"kernel assigns major numbers dynamically. "
|
||||
"Using major number %d instead.",
|
||||
cmd->dev_types->device_mapper_major);
|
||||
} else {
|
||||
if (arg_is_set(cmd, major_ARG)) {
|
||||
log_warn("WARNING: Ignoring supplied major number - "
|
||||
"kernel assigns major numbers dynamically. "
|
||||
"Using major number %d instead.",
|
||||
cmd->dev_types->device_mapper_major);
|
||||
}
|
||||
*major = cmd->dev_types->device_mapper_major;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user