summaryrefslogtreecommitdiffstats
path: root/src/kernel/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/core.c')
-rw-r--r--src/kernel/core.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/src/kernel/core.c b/src/kernel/core.c
index e92bd9a..db1f6de 100644
--- a/src/kernel/core.c
+++ b/src/kernel/core.c
@@ -120,16 +120,12 @@ static int dnbd3_add_device(dnbd3_device_t *dev, int minor)
blk_queue_max_hw_sectors(disk->queue, 65536);
disk->queue->limits.max_sectors = 256;
- mutex_init(&dev->config_lock);
- refcount_set(&dev->config_refs, 0);
- refcount_set(&dev->refs, 1);
INIT_LIST_HEAD(&dev->list);
disk->major = major;
disk->first_minor = minor;
disk->fops = &dnbd3_fops;
disk->private_data = dev;
sprintf(disk->disk_name, "dnbd%i", minor);
-// sprintf(disk->disk_name, "dnbd3%i", minor);
printk(KERN_DEBUG "dnbd3: add disk device %s\n", disk->disk_name);
add_disk(disk);
dnbd3_sysfs_init(dev);
@@ -207,9 +203,7 @@ static void dnbd3_dev_remove(struct dnbd3_device_t *dnbd3)
del_gendisk(disk);
blk_cleanup_queue(q);
blk_mq_free_tag_set(&dnbd3->tag_set);
- if (dnbd3->sock) {
- dnbd3_net_disconnect(dnbd3);
- }
+ dnbd3_net_disconnect(dnbd3);
disk->private_data = NULL;
put_disk(disk);
}
@@ -217,11 +211,10 @@ static void dnbd3_dev_remove(struct dnbd3_device_t *dnbd3)
static void dnbd3_put(struct dnbd3_device_t *dnbd3)
{
- if (refcount_dec_and_mutex_lock(&dnbd3->refs, &dnbd3_index_mutex)) {
- idr_remove(&dnbd3_index_idr, dnbd3->minor);
- mutex_unlock(&dnbd3_index_mutex);
- dnbd3_dev_remove(dnbd3);
- }
+ mutex_lock(&dnbd3_index_mutex);
+ idr_remove(&dnbd3_index_idr, dnbd3->minor);
+ mutex_unlock(&dnbd3_index_mutex);
+ dnbd3_dev_remove(dnbd3);
}
@@ -239,9 +232,6 @@ static void __exit dnbd3_exit(void)
dnbd3 = list_first_entry(&del_list, struct dnbd3_device_t, list);
dnbd3_sysfs_exit(dnbd3);
list_del_init(&dnbd3->list);
- if (refcount_read(&dnbd3->refs) != 1) {
- printk(KERN_ERR "dnbd3: possibly leaking a device\n");
- }
dnbd3_put(dnbd3);
}