Messages in this thread | | | Date | Fri, 05 Sep 2014 17:25:04 +0200 | From | Bart Van Assche <> | Subject | Re: [PATCH] scsi_debug: deadlock between completions and surprise module removal |
| |
On 09/05/14 15:56, Douglas Gilbert wrote: > With scsi-mq I think many LLDs probably have a new > race possibility between a surprise rmmod of the LLD > and another thread presenting a new command at about > the same time (or another thread's command completing > around that time). Does anything above the LLD stop > this happening? > > Looking at mpt3sas and hpsa module exit calls, they don't > seem to guard against this possibility. > > The test is pretty easy: build the LLD as a module, load > it and fire up a multi-thread, libaio fio test on one or > more devices (SSDs would probably be good) on that LLD. > While the test is running, do 'rmmod LLD'.
An LLD must call scsi_remove_host() directly or indirectly from the module cleanup path. scsi_remove_host() triggers a call to blk_cleanup_queue(). That last function sets the flag QUEUE_FLAG_DYING which prevents that new I/O is queued and waits until previously queued requests have finished before returning.
Bart.
| |