mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:46:16 +00:00
scsi: Expand all create*_workqueue() invocations
The workqueue maintainer wants to remove the create*_workqueue() macros because these macros always set the WQ_MEM_RECLAIM flag and because these only support literal workqueue names. Hence this patch that replaces the create*_workqueue() invocations with the definition of this macro. The WQ_MEM_RECLAIM flag has been retained because I think that flag is necessary for workqueues created by storage drivers. This patch has been generated by running spatch and git clang-format. spatch has been invoked as follows: spatch --in-place --sp-file expand-create-workqueue.spatch $(git grep -lEw 'create_(freezable_|singlethread_|)workqueue' */scsi */ufs) The contents of the expand-create-workqueue.spatch file is as follows: @@ expression name; @@ -create_workqueue(name) +alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, name) @@ expression name; @@ -create_freezable_workqueue(name) +alloc_workqueue("%s", WQ_FREEZABLE | WQ_UNBOUND | WQ_MEM_RECLAIM, 1, name) @@ expression name; @@ -create_singlethread_workqueue(name) +alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, name) Reviewed-by: Peter Wang <peter.wang@mediatek.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20240822195944.654691-2-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
8400291e28
commit
b97c0741c7
@ -768,7 +768,8 @@ bfad_thread_workq(struct bfad_s *bfad)
|
||||
bfa_trc(bfad, 0);
|
||||
snprintf(im->drv_workq_name, KOBJ_NAME_LEN, "bfad_wq_%d",
|
||||
bfad->inst_no);
|
||||
im->drv_workq = create_singlethread_workqueue(im->drv_workq_name);
|
||||
im->drv_workq = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM,
|
||||
im->drv_workq_name);
|
||||
if (!im->drv_workq)
|
||||
return BFA_STATUS_FAILED;
|
||||
|
||||
|
@ -2363,8 +2363,8 @@ static int _bnx2fc_create(struct net_device *netdev,
|
||||
interface->vlan_id = vlan_id;
|
||||
interface->tm_timeout = BNX2FC_TM_TIMEOUT;
|
||||
|
||||
interface->timer_work_queue =
|
||||
create_singlethread_workqueue("bnx2fc_timer_wq");
|
||||
interface->timer_work_queue = alloc_ordered_workqueue(
|
||||
"%s", WQ_MEM_RECLAIM, "bnx2fc_timer_wq");
|
||||
if (!interface->timer_work_queue) {
|
||||
printk(KERN_ERR PFX "ulp_init could not create timer_wq\n");
|
||||
rc = -EINVAL;
|
||||
|
@ -822,7 +822,8 @@ static int __init rdac_init(void)
|
||||
/*
|
||||
* Create workqueue to handle mode selects for rdac
|
||||
*/
|
||||
kmpath_rdacd = create_singlethread_workqueue("kmpath_rdacd");
|
||||
kmpath_rdacd =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, "kmpath_rdacd");
|
||||
if (!kmpath_rdacd) {
|
||||
scsi_unregister_device_handler(&rdac_dh);
|
||||
printk(KERN_ERR "kmpath_rdacd creation failed.\n");
|
||||
|
@ -1114,7 +1114,8 @@ int efct_scsi_tgt_new_device(struct efct *efct)
|
||||
atomic_set(&efct->tgt_efct.watermark_hit, 0);
|
||||
atomic_set(&efct->tgt_efct.initiator_count, 0);
|
||||
|
||||
lio_wq = create_singlethread_workqueue("efct_lio_worker");
|
||||
lio_wq = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM,
|
||||
"efct_lio_worker");
|
||||
if (!lio_wq) {
|
||||
efc_log_err(efct, "workqueue create failed\n");
|
||||
return -EIO;
|
||||
|
@ -313,7 +313,8 @@ int esas2r_init_adapter(struct Scsi_Host *host, struct pci_dev *pcid,
|
||||
esas2r_fw_event_off(a);
|
||||
snprintf(a->fw_event_q_name, ESAS2R_KOBJ_NAME_LEN, "esas2r/%d",
|
||||
a->index);
|
||||
a->fw_event_q = create_singlethread_workqueue(a->fw_event_q_name);
|
||||
a->fw_event_q = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM,
|
||||
a->fw_event_q_name);
|
||||
|
||||
init_waitqueue_head(&a->buffered_ioctl_waiter);
|
||||
init_waitqueue_head(&a->nvram_waiter);
|
||||
|
@ -799,16 +799,16 @@ struct fcoe_ctlr_device *fcoe_ctlr_device_add(struct device *parent,
|
||||
|
||||
snprintf(ctlr->work_q_name, sizeof(ctlr->work_q_name),
|
||||
"ctlr_wq_%d", ctlr->id);
|
||||
ctlr->work_q = create_singlethread_workqueue(
|
||||
ctlr->work_q_name);
|
||||
ctlr->work_q = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM,
|
||||
ctlr->work_q_name);
|
||||
if (!ctlr->work_q)
|
||||
goto out_del;
|
||||
|
||||
snprintf(ctlr->devloss_work_q_name,
|
||||
sizeof(ctlr->devloss_work_q_name),
|
||||
"ctlr_dl_wq_%d", ctlr->id);
|
||||
ctlr->devloss_work_q = create_singlethread_workqueue(
|
||||
ctlr->devloss_work_q_name);
|
||||
ctlr->devloss_work_q = alloc_ordered_workqueue(
|
||||
"%s", WQ_MEM_RECLAIM, ctlr->devloss_work_q_name);
|
||||
if (!ctlr->devloss_work_q)
|
||||
goto out_del_q;
|
||||
|
||||
|
@ -1161,14 +1161,16 @@ static int __init fnic_init_module(void)
|
||||
goto err_create_fnic_ioreq_slab;
|
||||
}
|
||||
|
||||
fnic_event_queue = create_singlethread_workqueue("fnic_event_wq");
|
||||
fnic_event_queue =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, "fnic_event_wq");
|
||||
if (!fnic_event_queue) {
|
||||
printk(KERN_ERR PFX "fnic work queue create failed\n");
|
||||
err = -ENOMEM;
|
||||
goto err_create_fnic_workq;
|
||||
}
|
||||
|
||||
fnic_fip_queue = create_singlethread_workqueue("fnic_fip_q");
|
||||
fnic_fip_queue =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, "fnic_fip_q");
|
||||
if (!fnic_fip_queue) {
|
||||
printk(KERN_ERR PFX "fnic FIP work queue create failed\n");
|
||||
err = -ENOMEM;
|
||||
|
@ -2302,7 +2302,8 @@ int hisi_sas_alloc(struct hisi_hba *hisi_hba)
|
||||
|
||||
hisi_hba->last_slot_index = 0;
|
||||
|
||||
hisi_hba->wq = create_singlethread_workqueue(dev_name(dev));
|
||||
hisi_hba->wq =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, dev_name(dev));
|
||||
if (!hisi_hba->wq) {
|
||||
dev_err(dev, "sas_alloc: failed to create workqueue\n");
|
||||
goto err_out;
|
||||
|
@ -3537,7 +3537,7 @@ static int ibmvscsis_probe(struct vio_dev *vdev,
|
||||
init_completion(&vscsi->unconfig);
|
||||
|
||||
snprintf(wq_name, 24, "ibmvscsis%s", dev_name(&vdev->dev));
|
||||
vscsi->work_q = create_workqueue(wq_name);
|
||||
vscsi->work_q = alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, wq_name);
|
||||
if (!vscsi->work_q) {
|
||||
rc = -ENOMEM;
|
||||
dev_err(&vscsi->dev, "create_workqueue failed\n");
|
||||
|
@ -2693,7 +2693,8 @@ int fc_setup_exch_mgr(void)
|
||||
fc_cpu_order = ilog2(roundup_pow_of_two(nr_cpu_ids));
|
||||
fc_cpu_mask = (1 << fc_cpu_order) - 1;
|
||||
|
||||
fc_exch_workqueue = create_singlethread_workqueue("fc_exch_workqueue");
|
||||
fc_exch_workqueue = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM,
|
||||
"fc_exch_workqueue");
|
||||
if (!fc_exch_workqueue)
|
||||
goto err;
|
||||
return 0;
|
||||
|
@ -2263,7 +2263,8 @@ struct fc4_prov fc_rport_t0_prov = {
|
||||
*/
|
||||
int fc_setup_rport(void)
|
||||
{
|
||||
rport_event_queue = create_singlethread_workqueue("fc_rport_eq");
|
||||
rport_event_queue =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, "fc_rport_eq");
|
||||
if (!rport_event_queue)
|
||||
return -ENOMEM;
|
||||
return 0;
|
||||
|
@ -122,12 +122,12 @@ int sas_register_ha(struct sas_ha_struct *sas_ha)
|
||||
|
||||
error = -ENOMEM;
|
||||
snprintf(name, sizeof(name), "%s_event_q", dev_name(sas_ha->dev));
|
||||
sas_ha->event_q = create_singlethread_workqueue(name);
|
||||
sas_ha->event_q = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, name);
|
||||
if (!sas_ha->event_q)
|
||||
goto Undo_ports;
|
||||
|
||||
snprintf(name, sizeof(name), "%s_disco_q", dev_name(sas_ha->dev));
|
||||
sas_ha->disco_q = create_singlethread_workqueue(name);
|
||||
sas_ha->disco_q = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, name);
|
||||
if (!sas_ha->disco_q)
|
||||
goto Undo_event_q;
|
||||
|
||||
|
@ -1988,8 +1988,8 @@ megasas_fusion_start_watchdog(struct megasas_instance *instance)
|
||||
sizeof(instance->fault_handler_work_q_name),
|
||||
"poll_megasas%d_status", instance->host->host_no);
|
||||
|
||||
instance->fw_fault_work_q =
|
||||
create_singlethread_workqueue(instance->fault_handler_work_q_name);
|
||||
instance->fw_fault_work_q = alloc_ordered_workqueue(
|
||||
"%s", WQ_MEM_RECLAIM, instance->fault_handler_work_q_name);
|
||||
if (!instance->fw_fault_work_q) {
|
||||
dev_err(&instance->pdev->dev, "Failed from %s %d\n",
|
||||
__func__, __LINE__);
|
||||
|
@ -2742,8 +2742,8 @@ void mpi3mr_start_watchdog(struct mpi3mr_ioc *mrioc)
|
||||
snprintf(mrioc->watchdog_work_q_name,
|
||||
sizeof(mrioc->watchdog_work_q_name), "watchdog_%s%d", mrioc->name,
|
||||
mrioc->id);
|
||||
mrioc->watchdog_work_q =
|
||||
create_singlethread_workqueue(mrioc->watchdog_work_q_name);
|
||||
mrioc->watchdog_work_q = alloc_ordered_workqueue(
|
||||
"%s", WQ_MEM_RECLAIM, mrioc->watchdog_work_q_name);
|
||||
if (!mrioc->watchdog_work_q) {
|
||||
ioc_err(mrioc, "%s: failed (line=%d)\n", __func__, __LINE__);
|
||||
return;
|
||||
|
@ -846,8 +846,8 @@ mpt3sas_base_start_watchdog(struct MPT3SAS_ADAPTER *ioc)
|
||||
snprintf(ioc->fault_reset_work_q_name,
|
||||
sizeof(ioc->fault_reset_work_q_name), "poll_%s%d_status",
|
||||
ioc->driver_name, ioc->id);
|
||||
ioc->fault_reset_work_q =
|
||||
create_singlethread_workqueue(ioc->fault_reset_work_q_name);
|
||||
ioc->fault_reset_work_q = alloc_ordered_workqueue(
|
||||
"%s", WQ_MEM_RECLAIM, ioc->fault_reset_work_q_name);
|
||||
if (!ioc->fault_reset_work_q) {
|
||||
ioc_err(ioc, "%s: failed (line=%d)\n", __func__, __LINE__);
|
||||
return;
|
||||
|
@ -114,7 +114,8 @@ static bool myrb_create_mempools(struct pci_dev *pdev, struct myrb_hba *cb)
|
||||
|
||||
snprintf(cb->work_q_name, sizeof(cb->work_q_name),
|
||||
"myrb_wq_%d", cb->host->host_no);
|
||||
cb->work_q = create_singlethread_workqueue(cb->work_q_name);
|
||||
cb->work_q =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, cb->work_q_name);
|
||||
if (!cb->work_q) {
|
||||
dma_pool_destroy(cb->dcdb_pool);
|
||||
cb->dcdb_pool = NULL;
|
||||
|
@ -2208,7 +2208,8 @@ static bool myrs_create_mempools(struct pci_dev *pdev, struct myrs_hba *cs)
|
||||
|
||||
snprintf(cs->work_q_name, sizeof(cs->work_q_name),
|
||||
"myrs_wq_%d", shost->host_no);
|
||||
cs->work_q = create_singlethread_workqueue(cs->work_q_name);
|
||||
cs->work_q =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, cs->work_q_name);
|
||||
if (!cs->work_q) {
|
||||
dma_pool_destroy(cs->dcdb_pool);
|
||||
cs->dcdb_pool = NULL;
|
||||
|
@ -3374,7 +3374,8 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
|
||||
|
||||
sprintf(host_buf, "qedf_%u_link",
|
||||
qedf->lport->host->host_no);
|
||||
qedf->link_update_wq = create_workqueue(host_buf);
|
||||
qedf->link_update_wq =
|
||||
alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, host_buf);
|
||||
INIT_DELAYED_WORK(&qedf->link_update, qedf_handle_link_update);
|
||||
INIT_DELAYED_WORK(&qedf->link_recovery, qedf_link_recovery);
|
||||
INIT_DELAYED_WORK(&qedf->grcdump_work, qedf_wq_grcdump);
|
||||
@ -3585,8 +3586,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
|
||||
|
||||
/* Start LL2 processing thread */
|
||||
snprintf(host_buf, 20, "qedf_%d_ll2", host->host_no);
|
||||
qedf->ll2_recv_wq =
|
||||
create_workqueue(host_buf);
|
||||
qedf->ll2_recv_wq = alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, host_buf);
|
||||
if (!qedf->ll2_recv_wq) {
|
||||
QEDF_ERR(&(qedf->dbg_ctx), "Failed to LL2 workqueue.\n");
|
||||
rc = -ENOMEM;
|
||||
@ -3629,7 +3629,7 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
|
||||
|
||||
sprintf(host_buf, "qedf_%u_timer", qedf->lport->host->host_no);
|
||||
qedf->timer_work_queue =
|
||||
create_workqueue(host_buf);
|
||||
alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, host_buf);
|
||||
if (!qedf->timer_work_queue) {
|
||||
QEDF_ERR(&(qedf->dbg_ctx), "Failed to start timer "
|
||||
"workqueue.\n");
|
||||
@ -3641,7 +3641,8 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
|
||||
if (mode != QEDF_MODE_RECOVERY) {
|
||||
sprintf(host_buf, "qedf_%u_dpc",
|
||||
qedf->lport->host->host_no);
|
||||
qedf->dpc_wq = create_workqueue(host_buf);
|
||||
qedf->dpc_wq =
|
||||
alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, host_buf);
|
||||
}
|
||||
INIT_DELAYED_WORK(&qedf->recovery_work, qedf_recovery_handler);
|
||||
|
||||
@ -4182,7 +4183,7 @@ static int __init qedf_init(void)
|
||||
goto err3;
|
||||
}
|
||||
|
||||
qedf_io_wq = create_workqueue("qedf_io_wq");
|
||||
qedf_io_wq = alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, "qedf_io_wq");
|
||||
if (!qedf_io_wq) {
|
||||
QEDF_ERR(NULL, "Could not create qedf_io_wq.\n");
|
||||
goto err4;
|
||||
|
@ -2767,7 +2767,8 @@ static int __qedi_probe(struct pci_dev *pdev, int mode)
|
||||
}
|
||||
|
||||
sprintf(host_buf, "host_%d", qedi->shost->host_no);
|
||||
qedi->tmf_thread = create_singlethread_workqueue(host_buf);
|
||||
qedi->tmf_thread =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, host_buf);
|
||||
if (!qedi->tmf_thread) {
|
||||
QEDI_ERR(&qedi->dbg_ctx,
|
||||
"Unable to start tmf thread!\n");
|
||||
@ -2776,7 +2777,8 @@ static int __qedi_probe(struct pci_dev *pdev, int mode)
|
||||
}
|
||||
|
||||
sprintf(host_buf, "qedi_ofld%d", qedi->shost->host_no);
|
||||
qedi->offload_thread = create_workqueue(host_buf);
|
||||
qedi->offload_thread =
|
||||
alloc_workqueue("%s", WQ_MEM_RECLAIM, 1, host_buf);
|
||||
if (!qedi->offload_thread) {
|
||||
QEDI_ERR(&qedi->dbg_ctx,
|
||||
"Unable to start offload thread!\n");
|
||||
|
@ -3501,11 +3501,13 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
|
||||
if (IS_QLA8031(ha) || IS_MCTP_CAPABLE(ha)) {
|
||||
sprintf(wq_name, "qla2xxx_%lu_dpc_lp_wq", base_vha->host_no);
|
||||
ha->dpc_lp_wq = create_singlethread_workqueue(wq_name);
|
||||
ha->dpc_lp_wq =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, wq_name);
|
||||
INIT_WORK(&ha->idc_aen, qla83xx_service_idc_aen);
|
||||
|
||||
sprintf(wq_name, "qla2xxx_%lu_dpc_hp_wq", base_vha->host_no);
|
||||
ha->dpc_hp_wq = create_singlethread_workqueue(wq_name);
|
||||
ha->dpc_hp_wq =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, wq_name);
|
||||
INIT_WORK(&ha->nic_core_reset, qla83xx_nic_core_reset_work);
|
||||
INIT_WORK(&ha->idc_state_handler,
|
||||
qla83xx_idc_state_handler_work);
|
||||
|
@ -8806,7 +8806,7 @@ static int qla4xxx_probe_adapter(struct pci_dev *pdev,
|
||||
DEBUG2(printk("scsi: %s: Starting kernel thread for "
|
||||
"qla4xxx_dpc\n", __func__));
|
||||
sprintf(buf, "qla4xxx_%lu_dpc", ha->host_no);
|
||||
ha->dpc_thread = create_singlethread_workqueue(buf);
|
||||
ha->dpc_thread = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, buf);
|
||||
if (!ha->dpc_thread) {
|
||||
ql4_printk(KERN_WARNING, ha, "Unable to start DPC thread!\n");
|
||||
ret = -ENODEV;
|
||||
|
@ -302,7 +302,8 @@ snic_add_host(struct Scsi_Host *shost, struct pci_dev *pdev)
|
||||
SNIC_BUG_ON(shost->work_q != NULL);
|
||||
snprintf(shost->work_q_name, sizeof(shost->work_q_name), "scsi_wq_%d",
|
||||
shost->host_no);
|
||||
shost->work_q = create_singlethread_workqueue(shost->work_q_name);
|
||||
shost->work_q = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM,
|
||||
shost->work_q_name);
|
||||
if (!shost->work_q) {
|
||||
SNIC_HOST_ERR(shost, "Failed to Create ScsiHost wq.\n");
|
||||
|
||||
@ -884,7 +885,8 @@ snic_global_data_init(void)
|
||||
snic_glob->req_cache[SNIC_REQ_TM_CACHE] = cachep;
|
||||
|
||||
/* snic_event queue */
|
||||
snic_glob->event_q = create_singlethread_workqueue("snic_event_wq");
|
||||
snic_glob->event_q =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, "snic_event_wq");
|
||||
if (!snic_glob->event_q) {
|
||||
SNIC_ERR("snic event queue create failed\n");
|
||||
ret = -ENOMEM;
|
||||
|
@ -1797,7 +1797,8 @@ static int stex_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
|
||||
snprintf(hba->work_q_name, sizeof(hba->work_q_name),
|
||||
"stex_wq_%d", host->host_no);
|
||||
hba->work_q = create_singlethread_workqueue(hba->work_q_name);
|
||||
hba->work_q =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, hba->work_q_name);
|
||||
if (!hba->work_q) {
|
||||
printk(KERN_ERR DRV_NAME "(%s): create workqueue failed\n",
|
||||
pci_name(pdev));
|
||||
|
@ -1137,7 +1137,8 @@ static int pvscsi_setup_msg_workqueue(struct pvscsi_adapter *adapter)
|
||||
snprintf(name, sizeof(name),
|
||||
"vmw_pvscsi_wq_%u", adapter->host->host_no);
|
||||
|
||||
adapter->workqueue = create_singlethread_workqueue(name);
|
||||
adapter->workqueue =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, name);
|
||||
if (!adapter->workqueue) {
|
||||
printk(KERN_ERR "vmw_pvscsi: failed to create work queue\n");
|
||||
return 0;
|
||||
|
@ -1800,7 +1800,8 @@ static void ufshcd_init_clk_scaling(struct ufs_hba *hba)
|
||||
|
||||
snprintf(wq_name, sizeof(wq_name), "ufs_clkscaling_%d",
|
||||
hba->host->host_no);
|
||||
hba->clk_scaling.workq = create_singlethread_workqueue(wq_name);
|
||||
hba->clk_scaling.workq =
|
||||
alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, wq_name);
|
||||
|
||||
hba->clk_scaling.is_initialized = true;
|
||||
}
|
||||
@ -10444,7 +10445,7 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq)
|
||||
/* Initialize work queues */
|
||||
snprintf(eh_wq_name, sizeof(eh_wq_name), "ufs_eh_wq_%d",
|
||||
hba->host->host_no);
|
||||
hba->eh_wq = create_singlethread_workqueue(eh_wq_name);
|
||||
hba->eh_wq = alloc_ordered_workqueue("%s", WQ_MEM_RECLAIM, eh_wq_name);
|
||||
if (!hba->eh_wq) {
|
||||
dev_err(hba->dev, "%s: failed to create eh workqueue\n",
|
||||
__func__);
|
||||
|
Loading…
Reference in New Issue
Block a user