RE: Flush warning

Steve Wise
2017-08-07T15:28:12Z

> > The WARNING seems to be due to nvmet_rdma_queue_connect() calling
> > flush_scheduled_work() while in the upcall from the RDMA_CM. It I running
on
> > the iw_cm event workqueue, which is created with WQ_MEM_RECLAIM set. I'm
> not
> > sure what this WARNING is telling me. Does the iw_cm workqueue NOT need
> > WQ_MEM_RECLAIM set? Or is there some other issue with the nvmet/rdma
> code doing
> > work flushing in the iw_cm workq context?
>
> This flush is designed to prevent nvmet-rdma from having too much
> inflight resources in case of a high pace of controller teardown and
> establishment (like you trigger in your test).
>
> queue teardowns are run on system_wq, does iw_cm needs memory
> reclamation protection?

I don't know. I read the workqueue doc on WQ_MEM_RECLAIM, but I don't know who
to tell if iw_cm needs this or not. Can you give me an example of a workqueue
that _does_ need WQ_MEM_RECLAIM? I _think_ it means your workqueue is required
to run something that would get triggered by the oom OS code, but I don't know
if that would include rdma CMs or not...