OSDN Git Service

dm thin: provide specific errors for two table load failure cases
authorMike Snitzer <snitzer@redhat.com>
Fri, 27 Jul 2012 14:07:59 +0000 (15:07 +0100)
committerAlasdair G Kergon <agk@redhat.com>
Fri, 27 Jul 2012 14:07:59 +0000 (15:07 +0100)
Provide specific error message strings for two pool_ctr() failure cases
that currently give just "Unknown error".

Reference: test_two_pools_pointing_to_the_same_metadata_fails and
test_different_pool_cant_replace_pool in thinp-test-suite.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm-thin.c

index 0bb9e64..e89f8e7 100644 (file)
@@ -1828,15 +1828,19 @@ static struct pool *__pool_find(struct mapped_device *pool_md,
        struct pool *pool = __pool_table_lookup_metadata_dev(metadata_dev);
 
        if (pool) {
-               if (pool->pool_md != pool_md)
+               if (pool->pool_md != pool_md) {
+                       *error = "metadata device already in use by a pool";
                        return ERR_PTR(-EBUSY);
+               }
                __pool_inc(pool);
 
        } else {
                pool = __pool_table_lookup(pool_md);
                if (pool) {
-                       if (pool->md_dev != metadata_dev)
+                       if (pool->md_dev != metadata_dev) {
+                               *error = "different pool cannot replace a pool";
                                return ERR_PTR(-EINVAL);
+                       }
                        __pool_inc(pool);
 
                } else {