[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <2436ed10-1da8-4090-8e3d-4ed485d6907e@flourine.local>
Date: Tue, 8 Apr 2025 13:29:07 +0200
From: Daniel Wagner <dwagner@...e.de>
To: Christoph Hellwig <hch@....de>
Cc: Daniel Wagner <wagi@...nel.org>,
James Smart <james.smart@...adcom.com>, Sagi Grimberg <sagi@...mberg.me>,
Chaitanya Kulkarni <kch@...dia.com>, Hannes Reinecke <hare@...e.de>, Keith Busch <kbusch@...nel.org>,
linux-nvme@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 15/18] nvmet-fc: free pending reqs on tgtport
unregister
On Fri, Mar 21, 2025 at 07:19:03AM +0100, Christoph Hellwig wrote:
> On Tue, Mar 18, 2025 at 11:40:09AM +0100, Daniel Wagner wrote:
> > nvmet-fc: merge with f200af94ac9d ("nvmet-fc: free pending reqs on tgtport unregister")
>
> What is this supposed to mean?
This a left over from my dev work.
> > + for (;;) {
> > + lsop = list_first_entry_or_null(&tgtport->ls_req_list,
> > + struct nvmet_fc_ls_req_op,
> > + lsreq_list);
> > + if (!lsop)
> > + break;
>
> while ((lsop = list_first_entry_or_null(&tgtport->ls_req_list,
> struct nvmet_fc_ls_req_op, lsreq_list))) {
>
> > +
> > + list_del(&lsop->lsreq_list);
>
> Another case where I'd really love to help the list_pop helper Linus
> flamed me for :(
Sure, will change these for(;;) loops into while() loops.
BTW, bcachefs seems to have it:
#define container_of_or_null(ptr, type, member) \
({ \
typeof(ptr) _ptr = ptr; \
_ptr ? container_of(_ptr, type, member) : NULL; \
})
static inline struct list_head *list_pop(struct list_head *head)
{
if (list_empty(head))
return NULL;
struct list_head *ret = head->next;
list_del_init(ret);
return ret;
}
#define list_pop_entry(head, type, member) \
container_of_or_null(list_pop(head), type, member)
Powered by blists - more mailing lists