Remove cas_disk_claim()

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
Robert Baldyga 2022-09-16 17:03:31 +02:00
parent 70cc908b39
commit 6d2266f7ee
6 changed files with 8 additions and 50 deletions

View File

@ -51,7 +51,6 @@ enum {
};
struct cas_module {
struct list_head disk_list;
uint32_t next_disk_id;
int disk_major;
int next_minor;

View File

@ -55,7 +55,6 @@ int __init cas_init_disks(void)
CAS_DEBUG_TRACE();
cas_module.next_disk_id = 1;
INIT_LIST_HEAD(&cas_module.disk_list);
cas_module.disk_major = register_blkdev(cas_module.disk_major,
"cas");
@ -131,7 +130,6 @@ struct cas_disk *cas_disk_open(const char *path, void *private)
dsk->private = private;
dsk->id = cas_module.next_disk_id++;
list_add(&dsk->list, &cas_module.disk_list);
result = _cas_disk_init_kobject(dsk);
if (result)
@ -142,7 +140,6 @@ struct cas_disk *cas_disk_open(const char *path, void *private)
return dsk;
error_kobject:
list_del(&dsk->list);
close_bdev_exclusive(dsk->bd, CAS_DISK_OPEN_FMODE);
error_open_bdev:
kfree(dsk->path);
@ -152,28 +149,6 @@ error_kmem:
return ERR_PTR(result);
}
static void _cas_disk_claim(struct cas_disk *dsk, void *private)
{
dsk->private = private;
}
struct cas_disk *cas_disk_claim(const char *path, void *private)
{
struct list_head *item;
struct cas_disk *dsk = NULL;
BUG_ON(!path);
list_for_each(item, &cas_module.disk_list) {
dsk = list_entry(item, struct cas_disk, list);
if (strncmp(path, dsk->path, PATH_MAX) == 0) {
_cas_disk_claim(dsk, private);
return dsk;
}
}
return NULL;
}
static void __cas_disk_close(struct cas_disk *dsk)
{
close_bdev_exclusive(dsk->bd, CAS_DISK_OPEN_FMODE);
@ -189,8 +164,6 @@ void cas_disk_close(struct cas_disk *dsk)
CAS_DEBUG_DISK(dsk, "Destroying (%p)", dsk);
list_del(&dsk->list);
__cas_disk_close(dsk);
}

View File

@ -31,7 +31,6 @@ struct cas_disk {
struct cas_exp_obj *exp_obj;
struct kobject kobj;
struct list_head list;
void *private;
};
@ -49,15 +48,6 @@ int cas_disk_allocate_minors(int count);
*/
struct cas_disk *cas_disk_open(const char *path, void *private);
/**
* @brief Claim previously opened block device
* @param path Path to block device
* @param private Private data
* @return Pointer to cas_disk structure related to block device, or NULL
* if device is not opened.
*/
struct cas_disk *cas_disk_claim(const char *path, void *private);
/**
* @brief Close block device and remove from cas
* @param dsk Pointer to cas_disk structure related to block device

View File

@ -407,7 +407,7 @@ static int _cas_init_tag_set(struct cas_disk *dsk, struct blk_mq_tag_set *set)
}
int cas_exp_obj_create(struct cas_disk *dsk, const char *dev_name,
struct module *owner, struct cas_exp_obj_ops *ops)
struct module *owner, struct cas_exp_obj_ops *ops, void *priv)
{
struct cas_exp_obj *exp_obj;
struct request_queue *queue;
@ -469,6 +469,8 @@ int cas_exp_obj_create(struct cas_disk *dsk, const char *dev_name,
queue->queuedata = dsk;
exp_obj->queue = queue;
dsk->private = priv;
_cas_init_queues(dsk);
gd->fops = &_cas_exp_obj_ops;
@ -486,6 +488,7 @@ int cas_exp_obj_create(struct cas_disk *dsk, const char *dev_name,
return 0;
error_set_geometry:
dsk->private = NULL;
_cas_exp_obj_clear_dev_t(dsk);
error_exp_obj_set_dev_t:
cas_cleanup_mq_disk(exp_obj);

View File

@ -56,10 +56,11 @@ void cas_exp_obj_free(struct cas_disk *dsk);
* @param dev_name Name of exported object (top device)
* @param owner Pointer to cas module
* @param ops Pointer to structure with callback functions
* @param priv Private data
* @return 0 if success, errno if failure
*/
int cas_exp_obj_create(struct cas_disk *dsk, const char *dev_name,
struct module *owner, struct cas_exp_obj_ops *ops);
struct module *owner, struct cas_exp_obj_ops *ops, void *priv);
/**
* @brief Get request queue of exported object (top) block device

View File

@ -533,17 +533,9 @@ static int kcas_volume_create_exported_object(ocf_volume_t volume,
const char *name, void *priv, struct cas_exp_obj_ops *ops)
{
struct bd_object *bvol = bd_object(volume);
const struct ocf_volume_uuid *uuid = ocf_volume_get_uuid(volume);
char dev_name[DISK_NAME_LEN];
struct cas_disk *dsk;
int result;
dsk = cas_disk_claim(uuid->data, priv);
if (dsk != bvol->dsk) {
result = -KCAS_ERR_SYSTEM;
goto end;
}
bvol->expobj_wq = alloc_workqueue("expobj_wq_%s",
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0,
name);
@ -552,8 +544,8 @@ static int kcas_volume_create_exported_object(ocf_volume_t volume,
goto end;
}
result = cas_exp_obj_create(dsk, name,
THIS_MODULE, ops);
result = cas_exp_obj_create(bvol->dsk, name,
THIS_MODULE, ops, priv);
if (result) {
destroy_workqueue(bvol->expobj_wq);
goto end;