Beispiel #1
0
static int create_work_queues(void)
{
	struct work_queue *util_wq;

	if (init_work_queue(get_nr_nodes))
		return -1;

	sys->net_wqueue = create_work_queue("net", WQ_UNLIMITED);
	sys->gateway_wqueue = create_work_queue("gway", WQ_UNLIMITED);
	sys->io_wqueue = create_work_queue("io", WQ_UNLIMITED);
	sys->recovery_wqueue = create_work_queue("rw", WQ_UNLIMITED);
	sys->deletion_wqueue = create_ordered_work_queue("deletion");
	sys->block_wqueue = create_ordered_work_queue("block");
	sys->md_wqueue = create_ordered_work_queue("md");
	sys->areq_wqueue = create_work_queue("async_req", WQ_UNLIMITED);
	if (sys->enable_object_cache) {
		sys->oc_reclaim_wqueue =
			create_ordered_work_queue("oc_reclaim");
		sys->oc_push_wqueue = create_work_queue("oc_push", WQ_DYNAMIC);
		if (!sys->oc_reclaim_wqueue || !sys->oc_push_wqueue)
			return -1;
	}
	if (!sys->gateway_wqueue || !sys->io_wqueue || !sys->recovery_wqueue ||
	    !sys->deletion_wqueue || !sys->block_wqueue || !sys->md_wqueue ||
	    !sys->areq_wqueue)
			return -1;

	util_wq = create_ordered_work_queue("util");
	if (!util_wq)
		return -1;
	register_util_wq(util_wq);

	return 0;
}
Beispiel #2
0
static int create_work_queues(void)
{
    struct work_queue *util_wq;

    if (init_work_queue(get_nr_nodes))
        return -1;

    if (wq_net_threads) {
        sd_info("# of threads in net workqueue: %d", wq_net_threads);
        sys->net_wqueue = create_fixed_work_queue("net", wq_net_threads);
    } else {
        sd_info("net workqueue is created as unlimited, it is not recommended!");
        sys->net_wqueue = create_work_queue("net", WQ_UNLIMITED);
    }
    if (wq_gway_threads) {
        sd_info("# of threads in gway workqueue: %d", wq_gway_threads);
        sys->gateway_wqueue = create_fixed_work_queue("gway", wq_gway_threads);
    } else {
        sd_info("gway workqueue is created as unlimited, it is not recommended!");
        sys->gateway_wqueue = create_work_queue("gway", WQ_UNLIMITED);
    }
    if (wq_io_threads) {
        sd_info("# of threads in io workqueue: %d", wq_io_threads);
        sys->io_wqueue = create_fixed_work_queue("io", wq_io_threads);
    } else {
        sd_info("io workqueue is created as unlimited, it is not recommended!");
        sys->io_wqueue = create_work_queue("io", WQ_UNLIMITED);
    }
    if (wq_recovery_threads) {
        sd_info("# of threads in rw workqueue: %d", wq_recovery_threads);
        sys->recovery_wqueue = create_fixed_work_queue("rw", wq_recovery_threads);
    } else {
        sd_info("recovery workqueue is created as unlimited, it is not recommended!");
        sys->recovery_wqueue = create_work_queue("rw", WQ_UNLIMITED);
    }
    sys->deletion_wqueue = create_ordered_work_queue("deletion");
    sys->block_wqueue = create_ordered_work_queue("block");
    sys->md_wqueue = create_ordered_work_queue("md");
    if (wq_async_threads) {
        sd_info("# of threads in async_req workqueue: %d", wq_async_threads);
        sys->areq_wqueue = create_fixed_work_queue("async_req", wq_async_threads);
    } else {
        sd_info("async_req workqueue is created as unlimited, it is not recommended!");
        sys->areq_wqueue = create_work_queue("async_req", WQ_UNLIMITED);
    }
    if (!sys->gateway_wqueue || !sys->io_wqueue || !sys->recovery_wqueue ||
            !sys->deletion_wqueue || !sys->block_wqueue || !sys->md_wqueue ||
            !sys->areq_wqueue)
        return -1;

    util_wq = create_ordered_work_queue("util");
    if (!util_wq)
        return -1;
    register_util_wq(util_wq);

    return 0;
}
Beispiel #3
0
static int create_work_queues(void)
{
	if (init_work_queue(get_nr_nodes))
		return -1;

	sys->gateway_wqueue = create_work_queue("gway", WQ_UNLIMITED);
	sys->io_wqueue = create_work_queue("io", WQ_UNLIMITED);
	sys->recovery_wqueue = create_ordered_work_queue("rw");
	sys->deletion_wqueue = create_ordered_work_queue("deletion");
	sys->block_wqueue = create_ordered_work_queue("block");
	sys->md_wqueue = create_ordered_work_queue("md");
	if (sys->enable_object_cache) {
		sys->oc_reclaim_wqueue =
			create_ordered_work_queue("oc_reclaim");
		sys->oc_push_wqueue = create_work_queue("oc_push", WQ_DYNAMIC);
		if (!sys->oc_reclaim_wqueue || !sys->oc_push_wqueue)
			return -1;
	}
	if (!sys->gateway_wqueue || !sys->io_wqueue || !sys->recovery_wqueue ||
	    !sys->deletion_wqueue || !sys->block_wqueue || !sys->md_wqueue)
			return -1;

	return 0;
}