From: Mr NeilBrown Date: Sat, 18 Jan 2020 13:57:51 +0000 (-0500) Subject: LU-13004 target: convert tgt_send_buffer to use KIOV X-Git-Tag: 2.13.52~55 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=86c07d589db93021a41a21bb8e431575216fa9b8 LU-13004 target: convert tgt_send_buffer to use KIOV Rather than BULK_BUF_KVEC, use a BULK_BUF_KIOV descriptor. This is a step towards removing KVEC support. Signed-off-by: Mr NeilBrown Change-Id: I27a81f6a3ef7ba9b079b1b93f56f475a38aaa3f4 Reviewed-on: https://review.whamcloud.com/36827 Reviewed-by: James Simmons Reviewed-by: Mike Pershin Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- diff --git a/lustre/target/tgt_handler.c b/lustre/target/tgt_handler.c index 320281f..0558a63 100644 --- a/lustre/target/tgt_handler.c +++ b/lustre/target/tgt_handler.c @@ -1069,12 +1069,20 @@ int tgt_send_buffer(struct tgt_session_info *tsi, struct lu_rdbuf *rdbuf) struct ptlrpc_bulk_desc *desc; int i; int rc; + int pages = 0; ENTRY; - desc = ptlrpc_prep_bulk_exp(req, rdbuf->rb_nbufs, 1, - PTLRPC_BULK_PUT_SOURCE | PTLRPC_BULK_BUF_KVEC, - MDS_BULK_PORTAL, &ptlrpc_bulk_kvec_ops); + for (i = 0; i < rdbuf->rb_nbufs; i++) + /* There is only one caller (out_read) and we *know* that + * bufs are at most 4K, and 4K aligned, so a simple DIV_ROUND_UP + * is always sufficient. + */ + pages += DIV_ROUND_UP(rdbuf->rb_bufs[i].lb_len, PAGE_SIZE); + desc = ptlrpc_prep_bulk_exp(req, pages, 1, + PTLRPC_BULK_PUT_SOURCE | PTLRPC_BULK_BUF_KIOV, + MDS_BULK_PORTAL, + &ptlrpc_bulk_kiov_nopin_ops); if (desc == NULL) RETURN(-ENOMEM);