static int cbt_ioc_init(struct block_device *bdev, struct blk_user_cbt_info
__user *ucbt_ioc)
@@ -632,16 +633,13 @@ static int cbt_ioc_init(struct block_device *bdev, struct
blk_user_cbt_info __us
q = bdev_get_queue(bdev);
mutex_lock(&cbt_mutex);
- if (q->cbt) {
- ret = -EBUSY;
- goto err_mtx;
- }
+
cbt = do_cbt_alloc(q, ci.ci_name, i_size_read(bdev->bd_inode),
ci.ci_blksize);
if (IS_ERR(cbt))
ret = PTR_ERR(cbt);
else
- rcu_assign_pointer(q->cbt, cbt);
-err_mtx:
+ list_add_tail_rcu(&q->cbt_list, &cbt->list);
should we check for cbt name collision?
+
mutex_unlock(&cbt_mutex);
return ret;
}
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel