On 04/08/2016 03:30 PM, Sebastian Andrzej Siewior wrote: > On 03/15/2016 09:19 AM, Christoph Hellwig wrote: >> On Fri, Mar 11, 2016 at 05:32:15PM +0100, Sebastian Andrzej Siewior wrote: >>> alloc_workqueue() in setup and then queue_work_on(cpu, , item)? item >>> should be struct work_struct but all I have is a skb. Is there an easy >>> way to get this attached? >> >> Good question. There is skb->cb, but it looks like it doesn't have >> space for an additional work_item in the fcoe case. Maybe have >> a per-cpu work_struct and keep all the list handling as-is for now? > > Okay. Let me try this. What about the few fixes from the series (which > apply before the rework to smbboot theads)? okay kworker. This does not look good. I have it converted what I miss flushing work when CPU goes down and ensuring not to queue work while the CPU is down. - cpu_online(x) is racy. In DOWN_PREPARE the worker is deactivated / stopped. However slightly later the bit from the CPU mask is removed. - Whatever is queued and did not make it before the CPU went down seems to be delayed until the CPU comes back online. - if the worker keeps running while the CPU is going down the worker continues running on a different CPU. So I don't see how the former two points can be solved without keeping track of CPUs in a CPU notifier. Getting pushed to a different CPU be probably less of an issue if we would have a work-item and would not need to rely on the per-CPU list. Sebastian -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html