struct out_update_header *ouh;
struct out_update_buffer *oub;
__u32 buf_count = 0;
+ int page_count = 0;
int repsize = 0;
struct object_update_reply *reply;
int rc, i;
list_for_each_entry(ours, &our->our_req_list, ours_list) {
oub->oub_size = ours->ours_req_size;
oub++;
+ page_count += round_up(ours->ours_req_size, PAGE_SIZE) + 1;
}
req->rq_bulk_write = 1;
- desc = ptlrpc_prep_bulk_imp(req, buf_count,
+ desc = ptlrpc_prep_bulk_imp(req, page_count,
MD_MAX_BRW_SIZE >> LNET_MTU_BITS,
- PTLRPC_BULK_GET_SOURCE | PTLRPC_BULK_BUF_KVEC,
- MDS_BULK_PORTAL, &ptlrpc_bulk_kvec_ops);
+ PTLRPC_BULK_GET_SOURCE | PTLRPC_BULK_BUF_KIOV,
+ MDS_BULK_PORTAL, &ptlrpc_bulk_kiov_nopin_ops);
if (desc == NULL)
GOTO(out_req, rc = -ENOMEM);
return;
}
- INIT_LIST_HEAD(&list);
-
spin_lock(&ou->ou_lock);
/* invalidate all of request in the sending list */
list_for_each_entry_safe(our, tmp, &ou->ou_list, our_list) {
{
struct lu_env env;
struct osp_device *osp = arg;
- struct l_wait_info lwi = { 0 };
struct osp_updates *ou = osp->opd_update;
struct ptlrpc_thread *thread = &osp->opd_update_thread;
struct osp_update_request *our = NULL;
wake_up(&thread->t_ctl_waitq);
while (1) {
our = NULL;
- l_wait_event(ou->ou_waitq,
- !osp_send_update_thread_running(osp) ||
- osp_get_next_request(ou, &our), &lwi);
+ wait_event_idle(ou->ou_waitq,
+ !osp_send_update_thread_running(osp) ||
+ osp_get_next_request(ou, &our));
if (!osp_send_update_thread_running(osp)) {
if (our != NULL) {