write() system call(via rdma_get_cm_event) is not honoring a signal with flag SA_RESTART.
Krishna2 at chelsio.com
Thu May 19 12:22:14 UTC 2016
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?
From: Hans Petter Selasky [mailto:hps at selasky.org]
Sent: Wednesday, May 18, 2016 7:59 PM
To: KrishnamRaju ErapaRaju <Krishna2 at chelsio.com>; freebsd-infiniband at freebsd.org
Cc: Navdeep Parhar <navdeep at chelsio.com>; Steve Wise <swise at chelsio.com>
Subject: Re: write() system call(via rdma_get_cm_event) is not honoring a signal with flag SA_RESTART.
On 05/18/16 16:12, KrishnamRaju ErapaRaju wrote:
> As rdma_get_cm_event() calls ucma_get_event() via write system call, this system call may be blocked at wait_event_interruptible() until it gets an event or until it gets a signal interrupt.
Is this a regression issue?
ERESTARTSYS was previously defined incorrectly like a negative error code. This was fixed in:
Was your testing done with r299641 ? Can you check the error code you get in userspace?
More information about the freebsd-infiniband