diff options
Diffstat (limited to 'src/kernel/core.c')
-rw-r--r-- | src/kernel/core.c | 20 |
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); } |