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

Reply via email to