File tree Expand file tree Collapse file tree 1 file changed +7
-4
lines changed Expand file tree Collapse file tree 1 file changed +7
-4
lines changed Original file line number Diff line number Diff line change @@ -1382,16 +1382,19 @@ static void nvme_disable_admin_queue(struct nvme_dev *dev, bool shutdown)
1382
1382
1383
1383
/*
1384
1384
* Called only on a device that has been disabled and after all other threads
1385
- * that can check this device's completion queues have synced. This is the
1386
- * last chance for the driver to see a natural completion before
1387
- * nvme_cancel_request() terminates all incomplete requests.
1385
+ * that can check this device's completion queues have synced, except
1386
+ * nvme_poll(). This is the last chance for the driver to see a natural
1387
+ * completion before nvme_cancel_request() terminates all incomplete requests.
1388
1388
*/
1389
1389
static void nvme_reap_pending_cqes (struct nvme_dev * dev )
1390
1390
{
1391
1391
int i ;
1392
1392
1393
- for (i = dev -> ctrl .queue_count - 1 ; i > 0 ; i -- )
1393
+ for (i = dev -> ctrl .queue_count - 1 ; i > 0 ; i -- ) {
1394
+ spin_lock (& dev -> queues [i ].cq_poll_lock );
1394
1395
nvme_process_cq (& dev -> queues [i ]);
1396
+ spin_unlock (& dev -> queues [i ].cq_poll_lock );
1397
+ }
1395
1398
}
1396
1399
1397
1400
static int nvme_cmb_qdepth (struct nvme_dev * dev , int nr_io_queues ,
You can’t perform that action at this time.
0 commit comments