On Wed 17 Jun 2026 at 14:00, [email protected] wrote:
From: Cao Guanghui <[email protected]>
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 <[email protected]>
Reviewed-by: Su Yue <[email protected]>
---
drivers/md/dm-era-target.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/md/dm-era-target.c
b/drivers/md/dm-era-target.c
index 08ce96e8cf4f..4eb1c4f90e1b 100644
--- a/drivers/md/dm-era-target.c
+++ b/drivers/md/dm-era-target.c
@@ -1488,7 +1488,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,
@@ -1496,7 +1496,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);
@@ -1510,7 +1510,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)) {