On Tue, Aug 01, 2017 at 03:12:39PM -0700, James Smart wrote: > @@ -463,9 +472,9 @@ static struct nvmet_fc_fcp_iod * > nvmet_fc_alloc_fcp_iod(struct nvmet_fc_tgt_queue *queue) > { > static struct nvmet_fc_fcp_iod *fod; > - unsigned long flags; > > - spin_lock_irqsave(&queue->qlock, flags); > + /* Caller must hold queue->qlock */ + lockped_assert_held(&queue->qlock); So we can check if the caller really holds the queue lock. > + > fod = list_first_entry_or_null(&queue->fod_list, > struct nvmet_fc_fcp_iod, fcp_list); > if (fod) { [...] > + for (;;) { > + deferfcp = list_first_entry_or_null(&queue->pending_cmd_list, > + struct nvmet_fc_defer_fcp_req, req_list); > + if (!deferfcp) > + break; while ((deferfcp = list_first_entry_or_null(&queue->pending_cmd_list, struct nvmet_fc_defer_fcp_req, req_list)) != NULL) { ? Other than that, Reviewed-by: Johannes Thumshirn <jthumshirn@xxxxxxx> -- Johannes Thumshirn Storage jthumshirn@xxxxxxx +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850