[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH RFC PKS/PMEM 41/58] drivers/target: Utilize new kmap_thread()



From: Ira Weiny <ira.weiny@xxxxxxxxx>

These kmap() calls in this driver are localized to a single thread.  To
avoid the over head of global PKRS updates use the new kmap_thread()
call.

Signed-off-by: Ira Weiny <ira.weiny@xxxxxxxxx>
---
 drivers/target/target_core_iblock.c    | 4 ++--
 drivers/target/target_core_rd.c        | 4 ++--
 drivers/target/target_core_transport.c | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/target/target_core_iblock.c 
b/drivers/target/target_core_iblock.c
index 1c181d31f4c8..df7b1568edb3 100644
--- a/drivers/target/target_core_iblock.c
+++ b/drivers/target/target_core_iblock.c
@@ -415,7 +415,7 @@ iblock_execute_zero_out(struct block_device *bdev, struct 
se_cmd *cmd)
        unsigned char *buf, *not_zero;
        int ret;
 
-       buf = kmap(sg_page(sg)) + sg->offset;
+       buf = kmap_thread(sg_page(sg)) + sg->offset;
        if (!buf)
                return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
        /*
@@ -423,7 +423,7 @@ iblock_execute_zero_out(struct block_device *bdev, struct 
se_cmd *cmd)
         * incoming WRITE_SAME payload does not contain zeros.
         */
        not_zero = memchr_inv(buf, 0x00, cmd->data_length);
-       kunmap(sg_page(sg));
+       kunmap_thread(sg_page(sg));
 
        if (not_zero)
                return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
diff --git a/drivers/target/target_core_rd.c b/drivers/target/target_core_rd.c
index 408bd975170b..dbbdd39c5bf9 100644
--- a/drivers/target/target_core_rd.c
+++ b/drivers/target/target_core_rd.c
@@ -159,9 +159,9 @@ static int rd_allocate_sgl_table(struct rd_dev *rd_dev, 
struct rd_dev_sg_table *
                        sg_assign_page(&sg[j], pg);
                        sg[j].length = PAGE_SIZE;
 
-                       p = kmap(pg);
+                       p = kmap_thread(pg);
                        memset(p, init_payload, PAGE_SIZE);
-                       kunmap(pg);
+                       kunmap_thread(pg);
                }
 
                page_offset += sg_per_table;
diff --git a/drivers/target/target_core_transport.c 
b/drivers/target/target_core_transport.c
index ff26ab0a5f60..8d0bae5a92e5 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -1692,11 +1692,11 @@ int target_submit_cmd_map_sgls(struct se_cmd *se_cmd, 
struct se_session *se_sess
                        unsigned char *buf = NULL;
 
                        if (sgl)
-                               buf = kmap(sg_page(sgl)) + sgl->offset;
+                               buf = kmap_thread(sg_page(sgl)) + sgl->offset;
 
                        if (buf) {
                                memset(buf, 0, sgl->length);
-                               kunmap(sg_page(sgl));
+                               kunmap_thread(sg_page(sgl));
                        }
                }
 
-- 
2.28.0.rc0.12.gb6a658bd00c9




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.