diff options
author | Mikulas Patocka <mpatocka@redhat.com> | 2013-10-01 18:35:39 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2013-11-09 18:20:18 -0500 |
commit | 4cb3e1db21a94781bbf05238687c3e8a715ab2f9 (patch) | |
tree | cb1f1a00806693dedcb98eec12f81a1598d36924 /drivers | |
parent | dd8b0c2096e53b336324e99455efcc498599ba0f (diff) |
dm cache: return -EINVAL if the user specifies unknown cache policy
Return -EINVAL when the specified cache policy is unknown rather than
returning -ENOMEM.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/md/dm-cache-policy.c | 4 | ||||
-rw-r--r-- | drivers/md/dm-cache-target.c | 13 |
2 files changed, 9 insertions, 8 deletions
diff --git a/drivers/md/dm-cache-policy.c b/drivers/md/dm-cache-policy.c index 21c03c570c06..d80057968407 100644 --- a/drivers/md/dm-cache-policy.c +++ b/drivers/md/dm-cache-policy.c | |||
@@ -119,13 +119,13 @@ struct dm_cache_policy *dm_cache_policy_create(const char *name, | |||
119 | type = get_policy(name); | 119 | type = get_policy(name); |
120 | if (!type) { | 120 | if (!type) { |
121 | DMWARN("unknown policy type"); | 121 | DMWARN("unknown policy type"); |
122 | return NULL; | 122 | return ERR_PTR(-EINVAL); |
123 | } | 123 | } |
124 | 124 | ||
125 | p = type->create(cache_size, origin_size, cache_block_size); | 125 | p = type->create(cache_size, origin_size, cache_block_size); |
126 | if (!p) { | 126 | if (!p) { |
127 | put_policy(type); | 127 | put_policy(type); |
128 | return NULL; | 128 | return ERR_PTR(-ENOMEM); |
129 | } | 129 | } |
130 | p->private = type; | 130 | p->private = type; |
131 | 131 | ||
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c index 50afdf72285b..81fe85757585 100644 --- a/drivers/md/dm-cache-target.c +++ b/drivers/md/dm-cache-target.c | |||
@@ -1879,14 +1879,15 @@ static int set_config_values(struct cache *cache, int argc, const char **argv) | |||
1879 | static int create_cache_policy(struct cache *cache, struct cache_args *ca, | 1879 | static int create_cache_policy(struct cache *cache, struct cache_args *ca, |
1880 | char **error) | 1880 | char **error) |
1881 | { | 1881 | { |
1882 | cache->policy = dm_cache_policy_create(ca->policy_name, | 1882 | struct dm_cache_policy *p = dm_cache_policy_create(ca->policy_name, |
1883 | cache->cache_size, | 1883 | cache->cache_size, |
1884 | cache->origin_sectors, | 1884 | cache->origin_sectors, |
1885 | cache->sectors_per_block); | 1885 | cache->sectors_per_block); |
1886 | if (!cache->policy) { | 1886 | if (IS_ERR(p)) { |
1887 | *error = "Error creating cache's policy"; | 1887 | *error = "Error creating cache's policy"; |
1888 | return -ENOMEM; | 1888 | return PTR_ERR(p); |
1889 | } | 1889 | } |
1890 | cache->policy = p; | ||
1890 | 1891 | ||
1891 | return 0; | 1892 | return 0; |
1892 | } | 1893 | } |