]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] dm: printk tgt->error if dm_table_add_target() fails.
authorJoe Thornber <joe@fib011235813.fsnet.co.uk>
Wed, 8 Jan 2003 01:54:28 +0000 (17:54 -0800)
committerTrond Myklebust <trond.myklebust@fys.uio.no>
Wed, 8 Jan 2003 01:54:28 +0000 (17:54 -0800)
printk tgt->error if dm_table_add_target() fails.

drivers/md/dm-table.c

index ece7ec7d0fd2e6db402e789a1d13fb2f6544ac16..2b8b6869e67221af401e9a3ded716013e79ce10f 100644 (file)
@@ -578,9 +578,8 @@ static int split_args(int max, int *argc, char **argv, char *input)
 int dm_table_add_target(struct dm_table *t, const char *type,
                        sector_t start, sector_t len, char *params)
 {
-       int r, argc;
+       int r = -EINVAL, argc;
        char *argv[32];
-       struct target_type *tt;
        struct dm_target *tgt;
 
        if ((r = check_space(t)))
@@ -589,14 +588,13 @@ int dm_table_add_target(struct dm_table *t, const char *type,
        tgt = t->targets + t->num_targets;
        memset(tgt, 0, sizeof(*tgt));
 
-       tt = dm_get_target_type(type);
-       if (!tt) {
+       tgt->type = dm_get_target_type(type);
+       if (!tgt->type) {
                tgt->error = "unknown target type";
-               return -EINVAL;
+               goto bad;
        }
 
        tgt->table = t;
-       tgt->type = tt;
        tgt->begin = start;
        tgt->len = len;
        tgt->error = "Unknown error";
@@ -605,23 +603,19 @@ int dm_table_add_target(struct dm_table *t, const char *type,
         * Does this target adjoin the previous one ?
         */
        if (!adjoin(t, tgt)) {
-               DMERR("Gap in table");
-               dm_put_target_type(tt);
-               return -EINVAL;
+               tgt->error = "Gap in table";
+               goto bad;
        }
 
        r = split_args(ARRAY_SIZE(argv), &argc, argv, params);
        if (r) {
                tgt->error = "couldn't split parameters";
-               dm_put_target_type(tt);
-               return r;
+               goto bad;
        }
 
-       r = tt->ctr(tgt, argc, argv);
-       if (r) {
-               dm_put_target_type(tt);
-               return r;
-       }
+       r = tgt->type->ctr(tgt, argc, argv);
+       if (r)
+               goto bad;
 
        t->highs[t->num_targets++] = tgt->begin + tgt->len - 1;
 
@@ -629,6 +623,11 @@ int dm_table_add_target(struct dm_table *t, const char *type,
         * the merge fn apply the target level restrictions. */
        combine_restrictions_low(&t->limits, &tgt->limits);
        return 0;
+
+ bad:
+       printk(KERN_ERR DM_NAME ": %s\n", tgt->error);
+       dm_put_target_type(tgt->type);
+       return r;
 }
 
 static int setup_indexes(struct dm_table *t)