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>
This commit is contained in:
parent
dd8b0c2096
commit
4cb3e1db21
|
@ -119,13 +119,13 @@ struct dm_cache_policy *dm_cache_policy_create(const char *name,
|
||||||
type = get_policy(name);
|
type = get_policy(name);
|
||||||
if (!type) {
|
if (!type) {
|
||||||
DMWARN("unknown policy type");
|
DMWARN("unknown policy type");
|
||||||
return NULL;
|
return ERR_PTR(-EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
p = type->create(cache_size, origin_size, cache_block_size);
|
p = type->create(cache_size, origin_size, cache_block_size);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
put_policy(type);
|
put_policy(type);
|
||||||
return NULL;
|
return ERR_PTR(-ENOMEM);
|
||||||
}
|
}
|
||||||
p->private = type;
|
p->private = type;
|
||||||
|
|
||||||
|
|
|
@ -1879,14 +1879,15 @@ static int set_config_values(struct cache *cache, int argc, const char **argv)
|
||||||
static int create_cache_policy(struct cache *cache, struct cache_args *ca,
|
static int create_cache_policy(struct cache *cache, struct cache_args *ca,
|
||||||
char **error)
|
char **error)
|
||||||
{
|
{
|
||||||
cache->policy = dm_cache_policy_create(ca->policy_name,
|
struct dm_cache_policy *p = dm_cache_policy_create(ca->policy_name,
|
||||||
cache->cache_size,
|
cache->cache_size,
|
||||||
cache->origin_sectors,
|
cache->origin_sectors,
|
||||||
cache->sectors_per_block);
|
cache->sectors_per_block);
|
||||||
if (!cache->policy) {
|
if (IS_ERR(p)) {
|
||||||
*error = "Error creating cache's policy";
|
*error = "Error creating cache's policy";
|
||||||
return -ENOMEM;
|
return PTR_ERR(p);
|
||||||
}
|
}
|
||||||
|
cache->policy = p;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue