Loading drivers/md/dm-cache-target.c +31 −28 Original line number Diff line number Diff line Loading @@ -1813,12 +1813,12 @@ static struct kmem_cache *migration_cache; #define NOT_CORE_OPTION 1 static int process_config_option(struct cache *cache, char **argv) static int process_config_option(struct cache *cache, const char *key, const char *value) { unsigned long tmp; if (!strcasecmp(argv[0], "migration_threshold")) { if (kstrtoul(argv[1], 10, &tmp)) if (!strcasecmp(key, "migration_threshold")) { if (kstrtoul(value, 10, &tmp)) return -EINVAL; cache->migration_threshold = tmp; Loading @@ -1828,7 +1828,20 @@ static int process_config_option(struct cache *cache, char **argv) return NOT_CORE_OPTION; } static int set_config_values(struct dm_cache_policy *p, int argc, const char **argv) static int set_config_value(struct cache *cache, const char *key, const char *value) { int r = process_config_option(cache, key, value); if (r == NOT_CORE_OPTION) r = policy_set_config_value(cache->policy, key, value); if (r) DMWARN("bad config value for %s: %s", key, value); return r; } static int set_config_values(struct cache *cache, int argc, const char **argv) { int r = 0; Loading @@ -1838,12 +1851,9 @@ static int set_config_values(struct dm_cache_policy *p, int argc, const char **a } while (argc) { r = policy_set_config_value(p, argv[0], argv[1]); if (r) { DMWARN("policy_set_config_value failed: key = '%s', value = '%s'", argv[0], argv[1]); return r; } r = set_config_value(cache, argv[0], argv[1]); if (r) break; argc -= 2; argv += 2; Loading @@ -1855,8 +1865,6 @@ static int set_config_values(struct dm_cache_policy *p, int argc, const char **a static int create_cache_policy(struct cache *cache, struct cache_args *ca, char **error) { int r; cache->policy = dm_cache_policy_create(ca->policy_name, cache->cache_size, cache->origin_sectors, Loading @@ -1866,14 +1874,7 @@ static int create_cache_policy(struct cache *cache, struct cache_args *ca, return -ENOMEM; } r = set_config_values(cache->policy, ca->policy_argc, ca->policy_argv); if (r) { *error = "Error setting cache policy's config values"; dm_cache_policy_destroy(cache->policy); cache->policy = NULL; } return r; return 0; } /* Loading Loading @@ -1967,7 +1968,15 @@ static int cache_create(struct cache_args *ca, struct cache **result) r = create_cache_policy(cache, ca, error); if (r) goto bad; cache->policy_nr_args = ca->policy_argc; cache->migration_threshold = DEFAULT_MIGRATION_THRESHOLD; r = set_config_values(cache, ca->policy_argc, ca->policy_argv); if (r) { *error = "Error setting cache policy's config values"; goto bad; } cmd = dm_cache_metadata_open(cache->metadata_dev->bdev, ca->block_size, may_format, Loading @@ -1986,7 +1995,6 @@ static int cache_create(struct cache_args *ca, struct cache **result) INIT_LIST_HEAD(&cache->quiesced_migrations); INIT_LIST_HEAD(&cache->completed_migrations); INIT_LIST_HEAD(&cache->need_commit_migrations); cache->migration_threshold = DEFAULT_MIGRATION_THRESHOLD; atomic_set(&cache->nr_migrations, 0); init_waitqueue_head(&cache->migration_wait); Loading Loading @@ -2544,17 +2552,12 @@ static void cache_status(struct dm_target *ti, status_type_t type, */ static int cache_message(struct dm_target *ti, unsigned argc, char **argv) { int r; struct cache *cache = ti->private; if (argc != 2) return -EINVAL; r = process_config_option(cache, argv); if (r == NOT_CORE_OPTION) return policy_set_config_value(cache->policy, argv[0], argv[1]); return r; return set_config_value(cache, argv[0], argv[1]); } static int cache_iterate_devices(struct dm_target *ti, Loading Loading @@ -2612,7 +2615,7 @@ static void cache_io_hints(struct dm_target *ti, struct queue_limits *limits) static struct target_type cache_target = { .name = "cache", .version = {1, 1, 0}, .version = {1, 1, 1}, .module = THIS_MODULE, .ctr = cache_ctr, .dtr = cache_dtr, Loading Loading
drivers/md/dm-cache-target.c +31 −28 Original line number Diff line number Diff line Loading @@ -1813,12 +1813,12 @@ static struct kmem_cache *migration_cache; #define NOT_CORE_OPTION 1 static int process_config_option(struct cache *cache, char **argv) static int process_config_option(struct cache *cache, const char *key, const char *value) { unsigned long tmp; if (!strcasecmp(argv[0], "migration_threshold")) { if (kstrtoul(argv[1], 10, &tmp)) if (!strcasecmp(key, "migration_threshold")) { if (kstrtoul(value, 10, &tmp)) return -EINVAL; cache->migration_threshold = tmp; Loading @@ -1828,7 +1828,20 @@ static int process_config_option(struct cache *cache, char **argv) return NOT_CORE_OPTION; } static int set_config_values(struct dm_cache_policy *p, int argc, const char **argv) static int set_config_value(struct cache *cache, const char *key, const char *value) { int r = process_config_option(cache, key, value); if (r == NOT_CORE_OPTION) r = policy_set_config_value(cache->policy, key, value); if (r) DMWARN("bad config value for %s: %s", key, value); return r; } static int set_config_values(struct cache *cache, int argc, const char **argv) { int r = 0; Loading @@ -1838,12 +1851,9 @@ static int set_config_values(struct dm_cache_policy *p, int argc, const char **a } while (argc) { r = policy_set_config_value(p, argv[0], argv[1]); if (r) { DMWARN("policy_set_config_value failed: key = '%s', value = '%s'", argv[0], argv[1]); return r; } r = set_config_value(cache, argv[0], argv[1]); if (r) break; argc -= 2; argv += 2; Loading @@ -1855,8 +1865,6 @@ static int set_config_values(struct dm_cache_policy *p, int argc, const char **a static int create_cache_policy(struct cache *cache, struct cache_args *ca, char **error) { int r; cache->policy = dm_cache_policy_create(ca->policy_name, cache->cache_size, cache->origin_sectors, Loading @@ -1866,14 +1874,7 @@ static int create_cache_policy(struct cache *cache, struct cache_args *ca, return -ENOMEM; } r = set_config_values(cache->policy, ca->policy_argc, ca->policy_argv); if (r) { *error = "Error setting cache policy's config values"; dm_cache_policy_destroy(cache->policy); cache->policy = NULL; } return r; return 0; } /* Loading Loading @@ -1967,7 +1968,15 @@ static int cache_create(struct cache_args *ca, struct cache **result) r = create_cache_policy(cache, ca, error); if (r) goto bad; cache->policy_nr_args = ca->policy_argc; cache->migration_threshold = DEFAULT_MIGRATION_THRESHOLD; r = set_config_values(cache, ca->policy_argc, ca->policy_argv); if (r) { *error = "Error setting cache policy's config values"; goto bad; } cmd = dm_cache_metadata_open(cache->metadata_dev->bdev, ca->block_size, may_format, Loading @@ -1986,7 +1995,6 @@ static int cache_create(struct cache_args *ca, struct cache **result) INIT_LIST_HEAD(&cache->quiesced_migrations); INIT_LIST_HEAD(&cache->completed_migrations); INIT_LIST_HEAD(&cache->need_commit_migrations); cache->migration_threshold = DEFAULT_MIGRATION_THRESHOLD; atomic_set(&cache->nr_migrations, 0); init_waitqueue_head(&cache->migration_wait); Loading Loading @@ -2544,17 +2552,12 @@ static void cache_status(struct dm_target *ti, status_type_t type, */ static int cache_message(struct dm_target *ti, unsigned argc, char **argv) { int r; struct cache *cache = ti->private; if (argc != 2) return -EINVAL; r = process_config_option(cache, argv); if (r == NOT_CORE_OPTION) return policy_set_config_value(cache->policy, argv[0], argv[1]); return r; return set_config_value(cache, argv[0], argv[1]); } static int cache_iterate_devices(struct dm_target *ti, Loading Loading @@ -2612,7 +2615,7 @@ static void cache_io_hints(struct dm_target *ti, struct queue_limits *limits) static struct target_type cache_target = { .name = "cache", .version = {1, 1, 0}, .version = {1, 1, 1}, .module = THIS_MODULE, .ctr = cache_ctr, .dtr = cache_dtr, Loading