scsi: iscsi: Use system_unbound_wq for destroy_work
Use the system_unbound_wq for async session destruction. We don't need a dedicated workqueue for async session destruction because: 1. perf does not seem to be an issue since we only allow 1 active work. 2. it does not have deps with other system works and we can run them in parallel with each other. Link: https://lore.kernel.org/r/20210525181821.7617-6-michael.christie@oracle.com Reviewed-by: Lee Duncan <lduncan@suse.com> Signed-off-by: Mike Christie <michael.christie@oracle.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
06c203a556
commit
b25b957d2d
@ -95,8 +95,6 @@ static DECLARE_WORK(stop_conn_work, stop_conn_work_fn);
|
||||
static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
|
||||
static struct workqueue_struct *iscsi_eh_timer_workq;
|
||||
|
||||
static struct workqueue_struct *iscsi_destroy_workq;
|
||||
|
||||
static DEFINE_IDA(iscsi_sess_ida);
|
||||
/*
|
||||
* list of registered transports and lock that must
|
||||
@ -3724,7 +3722,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
|
||||
list_del_init(&session->sess_list);
|
||||
spin_unlock_irqrestore(&sesslock, flags);
|
||||
|
||||
queue_work(iscsi_destroy_workq, &session->destroy_work);
|
||||
queue_work(system_unbound_wq, &session->destroy_work);
|
||||
}
|
||||
break;
|
||||
case ISCSI_UEVENT_UNBIND_SESSION:
|
||||
@ -4820,18 +4818,8 @@ static __init int iscsi_transport_init(void)
|
||||
goto release_nls;
|
||||
}
|
||||
|
||||
iscsi_destroy_workq = alloc_workqueue("%s",
|
||||
WQ_SYSFS | __WQ_LEGACY | WQ_MEM_RECLAIM | WQ_UNBOUND,
|
||||
1, "iscsi_destroy");
|
||||
if (!iscsi_destroy_workq) {
|
||||
err = -ENOMEM;
|
||||
goto destroy_wq;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
destroy_wq:
|
||||
destroy_workqueue(iscsi_eh_timer_workq);
|
||||
release_nls:
|
||||
netlink_kernel_release(nls);
|
||||
unregister_flashnode_bus:
|
||||
@ -4853,7 +4841,6 @@ unregister_transport_class:
|
||||
|
||||
static void __exit iscsi_transport_exit(void)
|
||||
{
|
||||
destroy_workqueue(iscsi_destroy_workq);
|
||||
destroy_workqueue(iscsi_eh_timer_workq);
|
||||
netlink_kernel_release(nls);
|
||||
bus_unregister(&iscsi_flashnode_bus);
|
||||
|
Loading…
Reference in New Issue
Block a user