On Wed, Aug 02, 2017 at 10:16:17AM +0200, Johannes Thumshirn wrote:
> 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.

I've added the assert after applying the patch to the nvme-4.13 tree.

> > +
> >     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,

I have to admit that I'd just prefer an opencoded list_empty +
container_of in both cases.  But given that all that is just personal
preference I've left the code as submitted by James.

Reply via email to