X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosp%2Fosp_trans.c;h=9686863b7abfa1ab1c9a60ad4d09c969143dcae0;hb=f32fbf189fab57202810a9a47343a14c6c3ead95;hp=0ad20994110fa2345dd720a5e654f3ece7dcf61f;hpb=fa9c4d0fee01d30d538a819f370f281431a43f68;p=fs%2Flustre-release.git diff --git a/lustre/osp/osp_trans.c b/lustre/osp/osp_trans.c index 0ad2099..9686863 100644 --- a/lustre/osp/osp_trans.c +++ b/lustre/osp/osp_trans.c @@ -347,6 +347,7 @@ int osp_prep_update_req(const struct lu_env *env, struct obd_import *imp, 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; @@ -418,13 +419,14 @@ int osp_prep_update_req(const struct lu_env *env, struct obd_import *imp, 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); @@ -1376,8 +1378,6 @@ void osp_invalidate_request(struct osp_device *osp) 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) {