{"action":"created","issue":{"url":"https://api.github.com/repos/facebookincubator/gloo/issues/77","repository_url":"https://api.github.com/repos/facebookincubator/gloo","labels_url":"https://api.github.com/repos/facebookincubator/gloo/issues/77/labels{/name}","comments_url":"https://api.github.com/repos/facebookincubator/gloo/issues/77/comments","events_url":"https://api.github.com/repos/facebookincubator/gloo/issues/77/events","html_url":"https://github.com/facebookincubator/gloo/pull/77","id":253471434,"number":77,"title":"Include memory region sge on every receive work request","user":{"login":"pietern","id":9845,"avatar_url":"https://avatars3.githubusercontent.com/u/9845?v=4","gravatar_id":"","url":"https://api.github.com/users/pietern","html_url":"https://github.com/pietern","followers_url":"https://api.github.com/users/pietern/followers","following_url":"https://api.github.com/users/pietern/following{/other_user}","gists_url":"https://api.github.com/users/pietern/gists{/gist_id}","starred_url":"https://api.github.com/users/pietern/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pietern/subscriptions","organizations_url":"https://api.github.com/users/pietern/orgs","repos_url":"https://api.github.com/users/pietern/repos","events_url":"https://api.github.com/users/pietern/events{/privacy}","received_events_url":"https://api.github.com/users/pietern/received_events","type":"User","site_admin":false},"labels":[{"id":531148430,"url":"https://api.github.com/repos/facebookincubator/gloo/labels/CLA%20Signed","name":"CLA Signed","color":"009900","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-08-28T22:09:00Z","updated_at":"2017-08-29T17:15:43Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/facebookincubator/gloo/pulls/77","html_url":"https://github.com/facebookincubator/gloo/pull/77","diff_url":"https://github.com/facebookincubator/gloo/pull/77.diff","patch_url":"https://github.com/facebookincubator/gloo/pull/77.patch"},"body":"In all uses of an ibverbs pair, it would first exchange memory\r\nregions for all buffers, before moving on to send/recv on those\r\nbuffers. Receives for memory regions and RDMA receives were posted\r\nseparately and because they were not interleaved this worked fine.\r\n\r\nWhen these receive operations were interleaved, I saw received memory\r\nregions equal to all NULs. Treating these two types of receives\r\ndifferently caused a mismatch between posted receives on the\r\ncompletion queue and the list with memory regions that the code\r\nexpected to take writes. And because all inbound writes are one-sided,\r\nwe never know whether we have to expect a memory region write or an\r\nRDMA write.\r\n\r\nThis change merges the approaches so that we only deal with a single\r\ntype of receive, that opportunistically includes a scatter/gather list\r\nwith the memory address of a memory region. That way, if the remote\r\nside sends a memory region, it can be received, and if it performs an\r\nRDMA write, it will simply be ignored. To map receive work requests to\r\nmemory regions, we keep track of the number of receive work requests\r\nposted and index into a fixed array of memory regions. This array can\r\nbe fixed because we configure an upper bound to the number of pending\r\nread work requests (kRecvCompletionQueueCapacity)."},"comment":{"url":"https://api.github.com/repos/facebookincubator/gloo/issues/comments/325732620","html_url":"https://github.com/facebookincubator/gloo/pull/77#issuecomment-325732620","issue_url":"https://api.github.com/repos/facebookincubator/gloo/issues/77","id":325732620,"user":{"login":"facebook-github-bot","id":6422482,"avatar_url":"https://avatars3.githubusercontent.com/u/6422482?v=4","gravatar_id":"","url":"https://api.github.com/users/facebook-github-bot","html_url":"https://github.com/facebook-github-bot","followers_url":"https://api.github.com/users/facebook-github-bot/followers","following_url":"https://api.github.com/users/facebook-github-bot/following{/other_user}","gists_url":"https://api.github.com/users/facebook-github-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/facebook-github-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/facebook-github-bot/subscriptions","organizations_url":"https://api.github.com/users/facebook-github-bot/orgs","repos_url":"https://api.github.com/users/facebook-github-bot/repos","events_url":"https://api.github.com/users/facebook-github-bot/events{/privacy}","received_events_url":"https://api.github.com/users/facebook-github-bot/received_events","type":"User","site_admin":false},"created_at":"2017-08-29T17:15:43Z","updated_at":"2017-08-29T17:15:43Z","body":"@pietern has imported this pull request.  If you are a Facebook employee, you can view this diff [on Phabricator](https://phabricator.intern.facebook.com/D5727247)."}}
{"actor":{"display_login":"facebook-github-bot"}}