Remove cas_disk_claim()
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
parent
70cc908b39
commit
6d2266f7ee
@ -51,7 +51,6 @@ enum {
|
||||
};
|
||||
|
||||
struct cas_module {
|
||||
struct list_head disk_list;
|
||||
uint32_t next_disk_id;
|
||||
int disk_major;
|
||||
int next_minor;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user