Re: CM event handler: process or IRQ context?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Aug 23, 2018 at 10:28:51AM -0400, Chuck Lever wrote:
> 
> 
> > On Aug 23, 2018, at 12:33 AM, Parav Pandit <parav@xxxxxxxxxxxx> wrote:
> > 
> > 
> > 
> >> From: linux-rdma-owner@xxxxxxxxxxxxxxx <linux-rdma-owner@xxxxxxxxxxxxxxx>
> >> On Behalf Of Jason Gunthorpe
> >> Sent: Wednesday, August 22, 2018 11:13 PM
> >> To: Chuck Lever <chuck.lever@xxxxxxxxxx>
> >> Cc: linux-rdma <linux-rdma@xxxxxxxxxxxxxxx>
> >> Subject: Re: CM event handler: process or IRQ context?
> >> 
> >> On Tue, Aug 14, 2018 at 10:41:19AM -0400, Chuck Lever wrote:
> >>> Hi-
> >>> 
> >>> /**
> >>> * rdma_create_id - Create an RDMA identifier.
> >>> *
> >>> * @net: The network namespace in which to create the new id.
> >>> * @event_handler: User callback invoked to report events associated with the
> >>> *   returned rdma_id.
> >>> * @context: User specified context associated with the id.
> >>> * @ps: RDMA port space.
> >>> * @qp_type: type of queue pair associated with the id.
> >>> *
> >>> * The id holds a reference on the network namespace until it is destroyed.
> >>> */
> >>> #define rdma_create_id(net, event_handler, context, ps, qp_type)
> >>> 
> >>> Is it guaranteed that the @event_handler function is called in a
> >>> process context? Code audit suggests it's always a delayed worker
> >>> thread, thus it would always be safe to use spin_lock_bh in the event
> >>> handler function.
> >>> 
> > This is my conclusion too. Rdmacm holds mutex while calling event handler.
> > I have code refactor for locking in progress in cma.c (at really slow pace). However I do not intent to change calling context.
> > 
> >>> Same question for the consumer's QP event handler:
> >>> 
> >>> struct ib_qp_init_attr {
> >>>        void                  (*event_handler)(struct ib_event *, void *);
> >>> 
> >>> Thanks in advance.
> >> 
> > Qp event handler can be called from non blocking context.
> > 
> >> If you find out please add a comment :)
> > Yes. Its worth the addition, apart from context what should/can be done specially with rdma_cm_id.
> 
> Thanks!
> 
> The obvious place to add a documenting comments for these handlers
> is where the consumers pass in their event handler functions. That's
> rdma_create_id for the CM event handler, but rdma_create_qp is handed
> an attr structure. Not sure where there is a noticeable spot for that
> one.

Document it in the struct definition ..

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux