- if (bulk->b_buf != ev->mem_desc.start + ev->offset)
- CERROR("bulkbuf != mem_desc -- why?\n");
- bulk->b_flags = PTL_BULK_RCVD;
- if (bulk->b_cb != NULL)
- bulk->b_cb(bulk, data);
- wake_up_interruptible(&bulk->b_waitq);
+ /* put with zero offset */
+ LASSERT (ev->offset == 0);
+ /* used iovs */
+ LASSERT ((ev->mem_desc.options & PTL_MD_IOV) != 0);
+ /* 1 fragment for each page always */
+ LASSERT (ev->mem_desc.niov == desc->b_page_count);
+
+ list_for_each_safe (tmp, next, &desc->b_page_list) {
+ bulk = list_entry(tmp, struct ptlrpc_bulk_page, b_link);
+
+ total += bulk->b_buflen;
+
+ if (bulk->b_cb != NULL)
+ bulk->b_cb(bulk);
+ }
+
+ LASSERT (ev->mem_desc.length == total);
+
+ desc->b_flags |= PTL_BULK_FL_RCVD;
+ wake_up(&desc->b_waitq);
+ if (desc->b_cb != NULL)
+ desc->b_cb(desc, desc->b_cb_data);