aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@redhat.com>2012-07-27 10:07:59 -0400
committerAlasdair G Kergon <agk@redhat.com>2012-07-27 10:07:59 -0400
commitf09996c993e256fce4b920588959866998d51250 (patch)
tree462169f8d08cdac6960db32bf6307068630f634e /drivers/md
parent1a66a08ae82b16eb40705ad112ff28873981af92 (diff)
dm thin: provide specific errors for two table load failure cases
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>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/dm-thin.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
index 0bb9e646e215..e89f8e7d8a33 100644
--- a/drivers/md/dm-thin.c
+++ b/drivers/md/dm-thin.c
@@ -1828,15 +1828,19 @@ static struct pool *__pool_find(struct mapped_device *pool_md,
1828 struct pool *pool = __pool_table_lookup_metadata_dev(metadata_dev); 1828 struct pool *pool = __pool_table_lookup_metadata_dev(metadata_dev);
1829 1829
1830 if (pool) { 1830 if (pool) {
1831 if (pool->pool_md != pool_md) 1831 if (pool->pool_md != pool_md) {
1832 *error = "metadata device already in use by a pool";
1832 return ERR_PTR(-EBUSY); 1833 return ERR_PTR(-EBUSY);
1834 }
1833 __pool_inc(pool); 1835 __pool_inc(pool);
1834 1836
1835 } else { 1837 } else {
1836 pool = __pool_table_lookup(pool_md); 1838 pool = __pool_table_lookup(pool_md);
1837 if (pool) { 1839 if (pool) {
1838 if (pool->md_dev != metadata_dev) 1840 if (pool->md_dev != metadata_dev) {
1841 *error = "different pool cannot replace a pool";
1839 return ERR_PTR(-EINVAL); 1842 return ERR_PTR(-EINVAL);
1843 }
1840 __pool_inc(pool); 1844 __pool_inc(pool);
1841 1845
1842 } else { 1846 } else {