Added create/activate/free all exported objects methods

Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
This commit is contained in:
Michal Rakowski 2019-07-16 16:09:50 +02:00
parent 47a150644c
commit ee6cba515a
5 changed files with 40 additions and 1 deletions

View File

@ -72,6 +72,7 @@ struct casdsk_functions_mapper {
int (*casdsk_exp_obj_destroy)(struct casdsk_disk *dsk);
int (*casdsk_exp_obj_create)(struct casdsk_disk *dsk, const char *dev_name,
struct module *owner, struct casdsk_exp_obj_ops *ops);
void(*casdsk_exp_obj_free)(struct casdsk_disk *dsk);
struct request_queue *(*casdsk_disk_get_queue)(struct casdsk_disk *dsk);
void (*casdsk_store_config)(size_t n_blobs, struct casdsk_props_conf *blobs);
struct block_device *(*casdsk_disk_get_blkdev)(struct casdsk_disk *dsk);

View File

@ -79,6 +79,7 @@ int static cas_casdisk_lookup_funtions(void)
cas_lookup_symbol(casdsk_disk_dettach);
cas_lookup_symbol(casdsk_exp_obj_destroy);
cas_lookup_symbol(casdsk_exp_obj_create);
cas_lookup_symbol(casdsk_exp_obj_free);
cas_lookup_symbol(casdsk_disk_get_queue);
cas_lookup_symbol(casdsk_store_config);
cas_lookup_symbol(casdsk_disk_get_blkdev);

View File

@ -884,6 +884,16 @@ int block_dev_activate_exported_object(ocf_core_t core)
return ret;
}
static int _block_dev_activate_exported_object(ocf_core_t core, void *cntx)
{
return block_dev_activate_exported_object(core);
}
int block_dev_activate_all_exported_objects(ocf_cache_t cache)
{
return ocf_core_visit(cache, _block_dev_activate_exported_object, NULL,
true);
}
int block_dev_create_exported_object(ocf_core_t core)
{
ocf_volume_t obj = ocf_core_get_volume(core);
@ -915,6 +925,15 @@ int block_dev_create_exported_object(ocf_core_t core)
return result;
}
static int _block_dev_create_exported_object_visitor(ocf_core_t core, void *cntx){
return block_dev_create_exported_object(core);
}
int block_dev_create_all_exported_objects(ocf_cache_t cache)
{
return ocf_core_visit(cache, _block_dev_create_exported_object_visitor, NULL,
true);
}
int block_dev_destroy_exported_object(ocf_core_t core)
{
int ret = 0;
@ -1016,3 +1035,17 @@ int block_dev_destroy_all_exported_objects(ocf_cache_t cache)
return 0;
}
static int _block_dev_free_exported_object(ocf_core_t core, void *cntx)
{
struct bd_object *bvol = bd_object(
ocf_core_get_volume(core));
casdisk_functions.casdsk_exp_obj_free(bvol->dsk);
return 0;
}
int block_dev_free_all_exported_objects(ocf_cache_t cache)
{
return ocf_core_visit(cache, _block_dev_free_exported_object, NULL,
true);
}

View File

@ -6,12 +6,15 @@
#ifndef __VOL_BLOCK_DEV_TOP_H__
#define __VOL_BLOCK_DEV_TOP_H__
int block_dev_activate_all_exported_objects(ocf_cache_t cache);
int block_dev_activate_exported_object(ocf_core_t core);
int block_dev_create_all_exported_objects(ocf_cache_t cache);
int block_dev_create_exported_object(ocf_core_t core);
int block_dev_destroy_all_exported_objects(ocf_cache_t cache);
int block_dev_destroy_exported_object(ocf_core_t core);
int block_dev_destroy_all_exported_objects(ocf_cache_t cache);
int block_dev_free_all_exported_objects(ocf_cache_t cache);
#endif /* __VOL_BLOCK_DEV_TOP_H__ */

View File

@ -421,6 +421,7 @@ void casdsk_exp_obj_free(struct casdsk_disk *dsk)
kobject_put(&exp_obj->kobj);
dsk->exp_obj = NULL;
}
EXPORT_SYMBOL(casdsk_exp_obj_free);
static void __casdsk_exp_obj_release(struct casdsk_exp_obj *exp_obj)
{