Lines Matching defs:ca

2021 static void destroy_cache_args(struct cache_args *ca)
2023 if (ca->metadata_dev)
2024 dm_put_device(ca->ti, ca->metadata_dev);
2026 if (ca->cache_dev)
2027 dm_put_device(ca->ti, ca->cache_dev);
2029 if (ca->origin_dev)
2030 dm_put_device(ca->ti, ca->origin_dev);
2032 kfree(ca);
2045 static int parse_metadata_dev(struct cache_args *ca, struct dm_arg_set *as,
2054 r = dm_get_device(ca->ti, dm_shift_arg(as),
2055 BLK_OPEN_READ | BLK_OPEN_WRITE, &ca->metadata_dev);
2061 metadata_dev_size = get_dev_size(ca->metadata_dev);
2064 ca->metadata_dev->bdev, THIN_METADATA_MAX_SECTORS);
2069 static int parse_cache_dev(struct cache_args *ca, struct dm_arg_set *as,
2077 r = dm_get_device(ca->ti, dm_shift_arg(as),
2078 BLK_OPEN_READ | BLK_OPEN_WRITE, &ca->cache_dev);
2083 ca->cache_sectors = get_dev_size(ca->cache_dev);
2088 static int parse_origin_dev(struct cache_args *ca, struct dm_arg_set *as,
2096 r = dm_get_device(ca->ti, dm_shift_arg(as),
2097 BLK_OPEN_READ | BLK_OPEN_WRITE, &ca->origin_dev);
2103 ca->origin_sectors = get_dev_size(ca->origin_dev);
2104 if (ca->ti->len > ca->origin_sectors) {
2112 static int parse_block_size(struct cache_args *ca, struct dm_arg_set *as,
2128 if (block_size > ca->cache_sectors) {
2133 ca->block_size = block_size;
2146 static int parse_features(struct cache_args *ca, struct dm_arg_set *as,
2156 struct cache_features *cf = &ca->features;
2202 static int parse_policy(struct cache_args *ca, struct dm_arg_set *as,
2214 ca->policy_name = dm_shift_arg(as);
2216 r = dm_read_arg_group(_args, as, &ca->policy_argc, error);
2220 ca->policy_argv = (const char **)as->argv;
2221 dm_consume_args(as, ca->policy_argc);
2226 static int parse_cache_args(struct cache_args *ca, int argc, char **argv,
2235 r = parse_metadata_dev(ca, &as, error);
2239 r = parse_cache_dev(ca, &as, error);
2243 r = parse_origin_dev(ca, &as, error);
2247 r = parse_block_size(ca, &as, error);
2251 r = parse_features(ca, &as, error);
2255 r = parse_policy(ca, &as, error);
2317 static int create_cache_policy(struct cache *cache, struct cache_args *ca,
2320 struct dm_cache_policy *p = dm_cache_policy_create(ca->policy_name,
2375 static int cache_create(struct cache_args *ca, struct cache **result)
2378 char **error = &ca->ti->error;
2380 struct dm_target *ti = ca->ti;
2383 bool may_format = ca->features.mode == CM_WRITE;
2389 cache->ti = ca->ti;
2400 cache->features = ca->features;
2408 cache->metadata_dev = ca->metadata_dev;
2409 cache->origin_dev = ca->origin_dev;
2410 cache->cache_dev = ca->cache_dev;
2412 ca->metadata_dev = ca->origin_dev = ca->cache_dev = NULL;
2414 origin_blocks = cache->origin_sectors = ca->origin_sectors;
2415 origin_blocks = block_div(origin_blocks, ca->block_size);
2418 cache->sectors_per_block = ca->block_size;
2424 if (ca->block_size & (ca->block_size - 1)) {
2425 dm_block_t cache_size = ca->cache_sectors;
2428 cache_size = block_div(cache_size, ca->block_size);
2431 cache->sectors_per_block_shift = __ffs(ca->block_size);
2432 set_cache_size(cache, to_cblock(ca->cache_sectors >> cache->sectors_per_block_shift));
2435 r = create_cache_policy(cache, ca, error);
2439 cache->policy_nr_args = ca->policy_argc;
2442 r = set_config_values(cache, ca->policy_argc, ca->policy_argv);
2449 ca->block_size, may_format,
2451 ca->features.metadata_version);
2599 struct cache_args *ca;
2602 ca = kzalloc(sizeof(*ca), GFP_KERNEL);
2603 if (!ca) {
2607 ca->ti = ti;
2609 r = parse_cache_args(ca, argc, argv, &ti->error);
2613 r = cache_create(ca, &cache);
2625 destroy_cache_args(ca);