Lines Matching refs:ca
1591 static void destroy_cache_args(struct cache_args *ca) in destroy_cache_args() argument
1593 if (ca->metadata_dev) in destroy_cache_args()
1594 dm_put_device(ca->ti, ca->metadata_dev); in destroy_cache_args()
1596 if (ca->cache_dev) in destroy_cache_args()
1597 dm_put_device(ca->ti, ca->cache_dev); in destroy_cache_args()
1599 if (ca->origin_dev) in destroy_cache_args()
1600 dm_put_device(ca->ti, ca->origin_dev); in destroy_cache_args()
1602 kfree(ca); in destroy_cache_args()
1615 static int parse_metadata_dev(struct cache_args *ca, struct dm_arg_set *as, in parse_metadata_dev() argument
1625 r = dm_get_device(ca->ti, dm_shift_arg(as), FMODE_READ | FMODE_WRITE, in parse_metadata_dev()
1626 &ca->metadata_dev); in parse_metadata_dev()
1632 metadata_dev_size = get_dev_size(ca->metadata_dev); in parse_metadata_dev()
1635 bdevname(ca->metadata_dev->bdev, b), THIN_METADATA_MAX_SECTORS); in parse_metadata_dev()
1640 static int parse_cache_dev(struct cache_args *ca, struct dm_arg_set *as, in parse_cache_dev() argument
1648 r = dm_get_device(ca->ti, dm_shift_arg(as), FMODE_READ | FMODE_WRITE, in parse_cache_dev()
1649 &ca->cache_dev); in parse_cache_dev()
1654 ca->cache_sectors = get_dev_size(ca->cache_dev); in parse_cache_dev()
1659 static int parse_origin_dev(struct cache_args *ca, struct dm_arg_set *as, in parse_origin_dev() argument
1667 r = dm_get_device(ca->ti, dm_shift_arg(as), FMODE_READ | FMODE_WRITE, in parse_origin_dev()
1668 &ca->origin_dev); in parse_origin_dev()
1674 ca->origin_sectors = get_dev_size(ca->origin_dev); in parse_origin_dev()
1675 if (ca->ti->len > ca->origin_sectors) { in parse_origin_dev()
1683 static int parse_block_size(struct cache_args *ca, struct dm_arg_set *as, in parse_block_size() argument
1698 if (tmp > ca->cache_sectors) { in parse_block_size()
1703 ca->block_size = tmp; in parse_block_size()
1714 static int parse_features(struct cache_args *ca, struct dm_arg_set *as, in parse_features() argument
1724 struct cache_features *cf = &ca->features; in parse_features()
1750 static int parse_policy(struct cache_args *ca, struct dm_arg_set *as, in parse_policy() argument
1762 ca->policy_name = dm_shift_arg(as); in parse_policy()
1764 r = dm_read_arg_group(_args, as, &ca->policy_argc, error); in parse_policy()
1768 ca->policy_argv = (const char **)as->argv; in parse_policy()
1769 dm_consume_args(as, ca->policy_argc); in parse_policy()
1774 static int parse_cache_args(struct cache_args *ca, int argc, char **argv, in parse_cache_args() argument
1783 r = parse_metadata_dev(ca, &as, error); in parse_cache_args()
1787 r = parse_cache_dev(ca, &as, error); in parse_cache_args()
1791 r = parse_origin_dev(ca, &as, error); in parse_cache_args()
1795 r = parse_block_size(ca, &as, error); in parse_cache_args()
1799 r = parse_features(ca, &as, error); in parse_cache_args()
1803 r = parse_policy(ca, &as, error); in parse_cache_args()
1865 static int create_cache_policy(struct cache *cache, struct cache_args *ca, in create_cache_policy() argument
1868 cache->policy = dm_cache_policy_create(ca->policy_name, in create_cache_policy()
1911 static int cache_create(struct cache_args *ca, struct cache **result) in cache_create() argument
1914 char **error = &ca->ti->error; in cache_create()
1916 struct dm_target *ti = ca->ti; in cache_create()
1919 bool may_format = ca->features.mode == CM_WRITE; in cache_create()
1925 cache->ti = ca->ti; in cache_create()
1934 cache->features = ca->features; in cache_create()
1940 cache->metadata_dev = ca->metadata_dev; in cache_create()
1941 cache->origin_dev = ca->origin_dev; in cache_create()
1942 cache->cache_dev = ca->cache_dev; in cache_create()
1944 ca->metadata_dev = ca->origin_dev = ca->cache_dev = NULL; in cache_create()
1947 origin_blocks = cache->origin_sectors = ca->origin_sectors; in cache_create()
1948 origin_blocks = block_div(origin_blocks, ca->block_size); in cache_create()
1951 cache->sectors_per_block = ca->block_size; in cache_create()
1957 if (ca->block_size & (ca->block_size - 1)) { in cache_create()
1958 dm_block_t cache_size = ca->cache_sectors; in cache_create()
1961 cache_size = block_div(cache_size, ca->block_size); in cache_create()
1964 cache->sectors_per_block_shift = __ffs(ca->block_size); in cache_create()
1965 cache->cache_size = to_cblock(ca->cache_sectors >> cache->sectors_per_block_shift); in cache_create()
1968 r = create_cache_policy(cache, ca, error); in cache_create()
1972 cache->policy_nr_args = ca->policy_argc; in cache_create()
1975 r = set_config_values(cache, ca->policy_argc, ca->policy_argv); in cache_create()
1982 ca->block_size, may_format, in cache_create()
2109 struct cache_args *ca; in cache_ctr() local
2112 ca = kzalloc(sizeof(*ca), GFP_KERNEL); in cache_ctr()
2113 if (!ca) { in cache_ctr()
2117 ca->ti = ti; in cache_ctr()
2119 r = parse_cache_args(ca, argc, argv, &ti->error); in cache_ctr()
2123 r = cache_create(ca, &cache); in cache_ctr()
2136 destroy_cache_args(ca); in cache_ctr()