[PATCH 1/2] nvmet_fc: add defer_req callback for deferment of cmd buffer return
Christoph Hellwig
hch at infradead.org
Thu Aug 10 02:04:10 PDT 2017
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.
More information about the Linux-nvme
mailing list