cifs:smbd Use the correct DMA direction when sending data
authorLong Li <longli@microsoft.com>
Tue, 14 May 2019 04:01:29 +0000 (21:01 -0700)
committerSteve French <stfrench@microsoft.com>
Tue, 14 May 2019 21:57:43 +0000 (16:57 -0500)
When sending data, use the DMA_TO_DEVICE to map buffers. Also log the number
of requests in a compounding request from upper layer.

Signed-off-by: Long Li <longli@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Acked-by: Pavel Shilovsky <pshilov@microsoft.com>
Acked-by: Ronnie Sahlberg <lsahlber@redhat.com>
fs/cifs/smbdirect.c

index 251ef1223206783603f2b931a5b49aaef89f4c83..caac37b1de8caeffd9b306491ecb63a0c01f95b9 100644 (file)
@@ -903,7 +903,7 @@ static int smbd_create_header(struct smbd_connection *info,
        request->sge[0].addr = ib_dma_map_single(info->id->device,
                                                 (void *)packet,
                                                 header_length,
-                                                DMA_BIDIRECTIONAL);
+                                                DMA_TO_DEVICE);
        if (ib_dma_mapping_error(info->id->device, request->sge[0].addr)) {
                mempool_free(request, info->request_mempool);
                rc = -EIO;
@@ -1005,7 +1005,7 @@ static int smbd_post_send_sgl(struct smbd_connection *info,
        for_each_sg(sgl, sg, num_sgs, i) {
                request->sge[i+1].addr =
                        ib_dma_map_page(info->id->device, sg_page(sg),
-                              sg->offset, sg->length, DMA_BIDIRECTIONAL);
+                              sg->offset, sg->length, DMA_TO_DEVICE);
                if (ib_dma_mapping_error(
                                info->id->device, request->sge[i+1].addr)) {
                        rc = -EIO;
@@ -2110,8 +2110,10 @@ int smbd_send(struct TCP_Server_Info *server,
                goto done;
        }
 
-       rqst_idx = 0;
+       log_write(INFO, "num_rqst=%d total length=%u\n",
+                       num_rqst, remaining_data_length);
 
+       rqst_idx = 0;
 next_rqst:
        rqst = &rqst_array[rqst_idx];
        iov = rqst->rq_iov;