Commit d16f060
committed
svcrdma: Add Write chunk WRs to the RPC's Send WR chain
Previously, Write chunk RDMA Writes were posted via a separate
ib_post_send() call with their own completion handler. Each Write
chunk incurred a doorbell and generated a completion event.
Link Write chunk WRs onto the RPC Reply's Send WR chain so that a
single ib_post_send() call posts both the RDMA Writes and the Send
WR. A single completion event signals that all operations have
finished. This reduces both doorbell rate and completion rate, as
well as eliminating the latency of a round-trip between the Write
chunk completion and the subsequent Send WR posting.
The lifecycle of Write chunk resources changes: previously, the
svc_rdma_write_done() completion handler released Write chunk
resources when RDMA Writes completed. With WR chaining, resources
remain live until the Send completion. A new sc_write_info_list
tracks Write chunk metadata attached to each Send context, and
svc_rdma_write_chunk_release() frees these resources when the
Send context is released.
The svc_rdma_write_done() handler now handles only error cases.
On success it returns immediately since the Send completion handles
resource release. On failure (WR flush), it closes the connection
to signal to the client that the RPC Reply is incomplete.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>1 parent c553983 commit d16f060
3 files changed
Lines changed: 91 additions & 26 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
216 | 216 | | |
217 | 217 | | |
218 | 218 | | |
| 219 | + | |
219 | 220 | | |
220 | 221 | | |
221 | 222 | | |
| |||
244 | 245 | | |
245 | 246 | | |
246 | 247 | | |
| 248 | + | |
| 249 | + | |
247 | 250 | | |
| 251 | + | |
248 | 252 | | |
249 | 253 | | |
250 | 254 | | |
| |||
277 | 281 | | |
278 | 282 | | |
279 | 283 | | |
| 284 | + | |
| 285 | + | |
280 | 286 | | |
281 | 287 | | |
282 | | - | |
283 | | - | |
284 | | - | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
285 | 292 | | |
286 | 293 | | |
287 | 294 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
254 | 276 | | |
255 | 277 | | |
256 | 278 | | |
| |||
307 | 329 | | |
308 | 330 | | |
309 | 331 | | |
310 | | - | |
311 | | - | |
312 | 332 | | |
313 | 333 | | |
314 | 334 | | |
315 | 335 | | |
316 | | - | |
| 336 | + | |
317 | 337 | | |
318 | 338 | | |
319 | 339 | | |
320 | 340 | | |
321 | 341 | | |
322 | 342 | | |
323 | 343 | | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
330 | 349 | | |
331 | 350 | | |
332 | 351 | | |
| |||
600 | 619 | | |
601 | 620 | | |
602 | 621 | | |
603 | | - | |
604 | | - | |
605 | | - | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
606 | 636 | | |
607 | 637 | | |
608 | 638 | | |
| 639 | + | |
609 | 640 | | |
| 641 | + | |
| 642 | + | |
610 | 643 | | |
611 | 644 | | |
612 | 645 | | |
| |||
622 | 655 | | |
623 | 656 | | |
624 | 657 | | |
625 | | - | |
626 | | - | |
627 | | - | |
| 658 | + | |
| 659 | + | |
628 | 660 | | |
| 661 | + | |
| 662 | + | |
| 663 | + | |
| 664 | + | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
| 669 | + | |
| 670 | + | |
| 671 | + | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
629 | 677 | | |
630 | 678 | | |
631 | 679 | | |
| |||
634 | 682 | | |
635 | 683 | | |
636 | 684 | | |
637 | | - | |
| 685 | + | |
638 | 686 | | |
639 | 687 | | |
| 688 | + | |
640 | 689 | | |
641 | 690 | | |
642 | | - | |
643 | | - | |
| 691 | + | |
| 692 | + | |
644 | 693 | | |
645 | | - | |
646 | | - | |
647 | | - | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
648 | 698 | | |
649 | 699 | | |
650 | 700 | | |
651 | 701 | | |
652 | 702 | | |
653 | 703 | | |
654 | 704 | | |
655 | | - | |
| 705 | + | |
656 | 706 | | |
657 | 707 | | |
658 | 708 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
| 153 | + | |
153 | 154 | | |
154 | 155 | | |
155 | 156 | | |
| |||
237 | 238 | | |
238 | 239 | | |
239 | 240 | | |
| 241 | + | |
240 | 242 | | |
241 | 243 | | |
242 | 244 | | |
| |||
1054 | 1056 | | |
1055 | 1057 | | |
1056 | 1058 | | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
1057 | 1065 | | |
1058 | 1066 | | |
1059 | 1067 | | |
| |||
1101 | 1109 | | |
1102 | 1110 | | |
1103 | 1111 | | |
1104 | | - | |
| 1112 | + | |
1105 | 1113 | | |
1106 | 1114 | | |
1107 | 1115 | | |
| |||
0 commit comments