[dm-devel] [PATCH v5] dm: add unstriped target

Mike Snitzer snitzer at redhat.com
Tue Dec 19 20:03:53 UTC 2017


On Tue, Dec 19 2017 at  1:35P -0500,
Scott Bauer <scott.bauer at intel.com> wrote:

> On Mon, Dec 18, 2017 at 06:22:33PM -0500, Mike Snitzer wrote:
> 
> > +	if (sscanf(argv[1], "%llu%c", &start, &dummy) != 1) {
>                         ^ should be argv[4]
> > +		ti->error = "Invalid striped device offset";
> > +		goto err;
> > +	}
> > +	uc->physical_start = start;
> 
> Hi Mike,
> Sorry for the bombardment of emails. I think I've fixed the last
> problem. Above is the last issue.
> 
> Below is a patch you can apply that will fix up the sector switch, I
> had mentioned in the previous mail, as well as the wrong argv usage
> from above.
> 
> I still have not solved the NULL pointer issue, i'll continue to
> investigate that. Unless you have an idea of why that is occuring.

See below for incremental patch that should fix the NULL pointer, please
test and I'll fold it in, along with your incremental.

Thanks!

> You can trigger it without having to create/remove/create. Just a
> creation with a bad (odd length) target length will do it.
> 
> If you don't want this patch but want me to do a v6 I can do that as
> well.

I'll take it, no worries on sending out v6.

diff --git a/drivers/md/dm-unstripe.c b/drivers/md/dm-unstripe.c
index b6f641dcbdee..27a8400a96f2 100644
--- a/drivers/md/dm-unstripe.c
+++ b/drivers/md/dm-unstripe.c
@@ -47,7 +47,6 @@ static int unstripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 	sector_t width, tmp_len;
 	unsigned long long start;
 	char dummy;
-	int r = -EINVAL;
 
 	if (argc != 5) {
 		ti->error = "Invalid number of arguments";
@@ -86,8 +85,7 @@ static int unstripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 		goto err;
 	}
 
-	r = dm_get_device(ti, argv[3], dm_table_get_mode(ti->table), &uc->dev);
-	if (r) {
+	if (dm_get_device(ti, argv[3], dm_table_get_mode(ti->table), &uc->dev))
 		ti->error = "Couldn't get striped device";
 		goto err;
 	}
@@ -124,7 +122,7 @@ static int unstripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
 	return 0;
 err:
 	cleanup_unstripe(uc, ti);
-	return r;
+	return -EINVAL;
 }
 
 static void unstripe_dtr(struct dm_target *ti)




More information about the dm-devel mailing list