- bulk->b_md.start = bulk->b_buf;
- bulk->b_md.length = bulk->b_buflen;
- bulk->b_md.eventq = bulk_source_eq;
- bulk->b_md.threshold = 2; /* SENT and ACK events */
- bulk->b_md.options = PTL_MD_OP_PUT;
- bulk->b_md.user_ptr = bulk;
-
- rc = PtlMDBind(bulk->b_connection->c_peer.peer_ni, bulk->b_md,
- &bulk->b_md_h);
- if (rc != 0) {
- CERROR("PtlMDBind failed: %d\n", rc);
- LBUG();
- return rc;
- }
-
- remote_id.nid = bulk->b_connection->c_peer.peer_nid;
- remote_id.pid = 0;
-
- CDEBUG(D_NET, "Sending %d bytes to portal %d, xid %d\n",
- bulk->b_md.length, portal, bulk->b_xid);
-
- rc = PtlPut(bulk->b_md_h, PTL_ACK_REQ, remote_id, portal, 0,
- bulk->b_xid, 0, 0);
- if (rc != PTL_OK) {
- CERROR("PtlPut(%d, %d, %d) failed: %d\n", remote_id.nid,
- portal, bulk->b_xid, rc);
- PtlMDUnlink(bulk->b_md_h);
- LBUG();
+ list_for_each_safe(tmp, next, &desc->b_page_list) {
+ struct ptlrpc_bulk_page *bulk;
+ bulk = list_entry(tmp, struct ptlrpc_bulk_page, b_link);
+
+ bulk->b_md.start = bulk->b_buf;
+ bulk->b_md.length = bulk->b_buflen;
+ bulk->b_md.eventq = bulk_source_eq;
+ bulk->b_md.threshold = 2; /* SENT and ACK */
+ bulk->b_md.options = PTL_MD_OP_PUT;
+ bulk->b_md.user_ptr = bulk;
+
+ rc = PtlMDBind(desc->b_connection->c_peer.peer_ni, bulk->b_md,
+ &bulk->b_md_h);
+ if (rc != 0) {
+ CERROR("PtlMDBind failed: %d\n", rc);
+ LBUG();
+ RETURN(rc);
+ }
+
+ remote_id.nid = desc->b_connection->c_peer.peer_nid;
+ remote_id.pid = 0;
+
+ CDEBUG(D_NET, "Sending %d bytes to portal %d, xid %d\n",
+ bulk->b_md.length, desc->b_portal, bulk->b_xid);
+
+ rc = PtlPut(bulk->b_md_h, PTL_ACK_REQ, remote_id,
+ desc->b_portal, 0, bulk->b_xid, 0, 0);
+ if (rc != PTL_OK) {
+ CERROR("PtlPut(%Lu, %d, %d) failed: %d\n",
+ remote_id.nid, desc->b_portal, bulk->b_xid, rc);
+ PtlMDUnlink(bulk->b_md_h);
+ LBUG();
+ RETURN(rc);
+ }