mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
dm era: fix error code propagation in era_ctr()
era_ctr() replaces the actual error codes returned by dm_get_device() and dm_set_target_max_io_len() with hardcoded -EINVAL, discarding the real reason for the failure (e.g. -ENODEV, -ENOMEM). This makes it harder for users to diagnose problems and is inconsistent with other dm targets (dm-thin, dm-verity, dm-flakey, dm-ebs) which propagate the original error. Fix all three sites to return 'r' instead of -EINVAL. Signed-off-by: Cao Guanghui <caoguanghui@kylinos.cn> Reviewed-by: Su Yue <glass.su@suse.com> Reviewed-by: Ming-Hung Tsai <mtsai@redhat.com> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
This commit is contained in:
committed by
Mikulas Patocka
parent
9ae672606c
commit
8d4dd2db7f
@@ -1489,7 +1489,7 @@ static int era_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
||||
if (r) {
|
||||
ti->error = "Error opening metadata device";
|
||||
era_destroy(era);
|
||||
return -EINVAL;
|
||||
return r;
|
||||
}
|
||||
|
||||
r = dm_get_device(ti, argv[1], BLK_OPEN_READ | BLK_OPEN_WRITE,
|
||||
@@ -1497,7 +1497,7 @@ static int era_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
||||
if (r) {
|
||||
ti->error = "Error opening data device";
|
||||
era_destroy(era);
|
||||
return -EINVAL;
|
||||
return r;
|
||||
}
|
||||
|
||||
r = sscanf(argv[2], "%u%c", &era->sectors_per_block, &dummy);
|
||||
@@ -1511,7 +1511,7 @@ static int era_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
||||
if (r) {
|
||||
ti->error = "could not set max io len";
|
||||
era_destroy(era);
|
||||
return -EINVAL;
|
||||
return r;
|
||||
}
|
||||
|
||||
if (!valid_block_size(era->sectors_per_block)) {
|
||||
|
||||
Reference in New Issue
Block a user