write() system call(via rdma_get_cm_event) is not honoring a signal with flag SA_RESTART.

KrishnamRaju ErapaRaju Krishna2 at chelsio.com
Mon May 23 15:38:38 UTC 2016


Hi Hans,

Did you get a chance to have a closer look into this issue?
Looping in application for errno: 512 would be workaround, but the fix(I think) should be in RDMA core, as there are many rdma applications, which already written assuming system calls gets restarted when interrupted by a signal.


Thanks,
Krishna.

-----Original Message-----
From: Hans Petter Selasky [mailto:hps at selasky.org] 
Sent: Thursday, May 19, 2016 6:04 PM
To: KrishnamRaju ErapaRaju <Krishna2 at chelsio.com>; freebsd-infiniband at freebsd.org
Subject: Re: write() system call(via rdma_get_cm_event) is not honoring a signal with flag SA_RESTART.

On 05/19/16 14:22, KrishnamRaju ErapaRaju wrote:
> Hans,
>
> I think it's not a regression.
>
> To verify it I have fetched the latest sources(both FreeBSD & OFED 3.2) and started building...
>  Between, may I know when will OFED 3.2 patches be pushed to upstream?
>
> Also, before started building,  I'd quickly replaced -ERESTARTSYS with -512 in ucma_get_event, I still don't see the write() system call getting restarted.
>
> Here are the return codes:
> ucma_get_event, returns -512
> rdma_get_cm_event, returns -1, errorno: 512
>
> So can FreeBSD understand the interrupted system call return value(-512) like Linux?

Hi,

I need to check this a bit closer. Possibly you'll need to loop in the application or library when you see errno 512.

--HPS


More information about the freebsd-infiniband mailing list