mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-14 01:01:27 +00:00
ib_srpt, iscsi-scst: Port to Linux kernel v5.8
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@9060 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -290,6 +290,12 @@ conftest/rdma_create_id_net/result-$(KVER).txt: \
|
||||
echo "$(call run_conftest_bool,rdma_create_id_net, \
|
||||
RDMA_CREATE_ID_TAKES_NET_ARG)" >"$@"
|
||||
|
||||
conftest/rdma_reject/result-$(KVER).txt: \
|
||||
conftest/rdma_reject/rdma_reject.c \
|
||||
conftest/rdma_reject/Makefile
|
||||
echo "$(call run_conftest_bool,rdma_reject, \
|
||||
RDMA_REJECT_HAS_FOUR_ARGS)" >"$@"
|
||||
|
||||
conftest/register_mad_agent/result-$(KVER).txt: \
|
||||
conftest/register_mad_agent/register_mad_agent.c \
|
||||
conftest/register_mad_agent/Makefile
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#ifndef INSIDE_KERNEL_TREE
|
||||
#include <linux/version.h>
|
||||
#endif
|
||||
#include <rdma/ib_cm.h>
|
||||
|
||||
#include "isert_dbg.h"
|
||||
#include "iser.h"
|
||||
@@ -1571,7 +1572,11 @@ fail_conn_create:
|
||||
isert_deref_device(isert_dev);
|
||||
mutex_unlock(&dev_list_mutex);
|
||||
fail_dev_create:
|
||||
rdma_reject(cm_id, NULL, 0);
|
||||
rdma_reject(cm_id, NULL, 0
|
||||
#if RDMA_REJECT_HAS_FOUR_ARGS
|
||||
, IB_CM_REJ_CONSUMER_DEFINED
|
||||
#endif
|
||||
);
|
||||
module_put(THIS_MODULE);
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -90,6 +90,9 @@ function evaluate(stmnt, pattern, arg, op, result) {
|
||||
"(LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0) \\&\\& " \
|
||||
"RHEL_RELEASE_CODE -0 < 7 * 256 + 5)", stmnt)
|
||||
|
||||
gsub("IB_CLIENT_ADD_ONE_RETURNS_INT",
|
||||
"(LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))", stmnt)
|
||||
|
||||
gsub("defined\\(IB_CLIENT_REMOVE_TAKES_TWO_ARGS\\)",
|
||||
"(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) || " \
|
||||
"RHEL_RELEASE_CODE -0 >= 7 * 256 + 5)", stmnt)
|
||||
@@ -156,6 +159,9 @@ function evaluate(stmnt, pattern, arg, op, result) {
|
||||
"(LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0) \\&\\& " \
|
||||
"RHEL_RELEASE_CODE -0 < 8 * 256 + 2)", stmnt)
|
||||
|
||||
gsub("RDMA_REJECT_HAS_FOUR_ARGS",
|
||||
"(LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))", stmnt)
|
||||
|
||||
gsub("defined(ENABLE_NPIV)", 0, stmnt)
|
||||
|
||||
gsub("defined(FC_VPORT_CREATE_DEFINED)", 0, stmnt)
|
||||
@@ -411,6 +417,7 @@ function handle_if(evaluated)
|
||||
|| $0 ~ "HAVE_RDMA_QUERY_GID" \
|
||||
|| $0 ~ "HAVE_SRP_DATA_DESC_IMM" \
|
||||
|| $0 ~ "HAVE_STRUCT_SRP_LOGIN_REQ_RDMA" \
|
||||
|| $0 ~ "IB_CLIENT_ADD_ONE_RETURNS_INT" \
|
||||
|| $0 ~ "IB_CLIENT_REMOVE_TAKES_TWO_ARGS" \
|
||||
|| $0 ~ "IB_CM_LISTEN_TAKES_FOURTH_ARG" \
|
||||
|| $0 ~ "IB_CREATE_CQ_HAS_INIT_ATTR" \
|
||||
@@ -421,6 +428,7 @@ function handle_if(evaluated)
|
||||
|| $0 ~ "MOFED_MAJOR" \
|
||||
|| $0 ~ "MOFED_MINOR" \
|
||||
|| $0 ~ "RDMA_CREATE_ID_TAKES_NET_ARG" \
|
||||
|| $0 ~ "RDMA_REJECT_HAS_FOUR_ARGS" \
|
||||
|| $0 ~ "REGISTER_MAD_AGENT_HAS_FLAGS_ARG" \
|
||||
|| $0 ~ "RHEL_MAJOR" \
|
||||
|| $0 ~ "RHEL_MINOR" \
|
||||
|
||||
@@ -1262,10 +1262,17 @@ static int dev_user_map_buf(struct scst_user_cmd *ucmd, unsigned long ubuff,
|
||||
ucmd->num_data_pages, (int)(ubuff & ~PAGE_MASK),
|
||||
(ucmd->cmd != NULL) ? ucmd->cmd->bufflen : -1);
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
|
||||
down_read(&tsk->mm->mmap_sem);
|
||||
rc = get_user_pages(ubuff, ucmd->num_data_pages, FOLL_WRITE,
|
||||
ucmd->data_pages, NULL);
|
||||
up_read(&tsk->mm->mmap_sem);
|
||||
#else
|
||||
mmap_read_lock(tsk->mm);
|
||||
rc = get_user_pages(ubuff, ucmd->num_data_pages, FOLL_WRITE,
|
||||
ucmd->data_pages, NULL);
|
||||
mmap_read_unlock(tsk->mm);
|
||||
#endif
|
||||
|
||||
/* get_user_pages() flushes dcache */
|
||||
|
||||
|
||||
@@ -485,8 +485,10 @@ static int vdisk_blockio_flush(struct block_device *bdev, gfp_t gfp_mask,
|
||||
res = blkdev_issue_flush(bdev, NULL);
|
||||
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 37)
|
||||
res = blkdev_issue_flush(bdev, gfp_mask, NULL, BLKDEV_IFL_WAIT);
|
||||
#else
|
||||
#elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
|
||||
res = blkdev_issue_flush(bdev, gfp_mask, NULL);
|
||||
#else
|
||||
res = blkdev_issue_flush(bdev, gfp_mask);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -202,6 +202,12 @@ conftest/gid_change/result-$(KVER).txt: \
|
||||
conftest/gid_change/Makefile
|
||||
echo "$(call run_conftest,gid_change,-DHAVE_IB_EVENT_GID_CHANGE)" >"$@"
|
||||
|
||||
conftest/ib_client_add_one/result-$(KVER).txt: \
|
||||
conftest/ib_client_add_one/add_one.c \
|
||||
conftest/ib_client_add_one/Makefile
|
||||
echo "$(call run_conftest_bool,ib_client_add_one, \
|
||||
IB_CLIENT_ADD_ONE_RETURNS_INT)" >"$@"
|
||||
|
||||
conftest/ib_client_remove/result-$(KVER).txt: \
|
||||
conftest/ib_client_remove/ib_client_remove.c \
|
||||
conftest/ib_client_remove/Makefile
|
||||
@@ -275,6 +281,12 @@ conftest/rdma_query_gid/result-$(KVER).txt: \
|
||||
conftest/rdma_query_gid/Makefile
|
||||
echo "$(call run_conftest_bool,rdma_query_gid,HAVE_RDMA_QUERY_GID)" >"$@"
|
||||
|
||||
conftest/rdma_reject/result-$(KVER).txt: \
|
||||
conftest/rdma_reject/rdma_reject.c \
|
||||
conftest/rdma_reject/Makefile
|
||||
echo "$(call run_conftest_bool,rdma_reject, \
|
||||
RDMA_REJECT_HAS_FOUR_ARGS)" >"$@"
|
||||
|
||||
conftest/register_mad_agent/result-$(KVER).txt: \
|
||||
conftest/register_mad_agent/register_mad_agent.c \
|
||||
conftest/register_mad_agent/Makefile
|
||||
|
||||
@@ -2946,7 +2946,11 @@ reject:
|
||||
SRP_BUF_FORMAT_INDIRECT);
|
||||
|
||||
if (rdma_cm_id)
|
||||
rdma_reject(rdma_cm_id, rej, sizeof(*rej));
|
||||
rdma_reject(rdma_cm_id, rej, sizeof(*rej)
|
||||
#if RDMA_REJECT_HAS_FOUR_ARGS
|
||||
, IB_CM_REJ_CONSUMER_DEFINED
|
||||
#endif
|
||||
);
|
||||
else
|
||||
ib_send_cm_rej(ib_cm_id, IB_CM_REJ_CONSUMER_DEFINED, NULL, 0,
|
||||
rej, sizeof(*rej));
|
||||
@@ -4369,7 +4373,7 @@ static void srpt_init_sport(struct srpt_port *sport, struct ib_device *ib_dev)
|
||||
/*
|
||||
* srpt_add_one() - Infiniband device addition callback function.
|
||||
*/
|
||||
static void srpt_add_one(struct ib_device *device)
|
||||
static int srpt_add_one(struct ib_device *device)
|
||||
{
|
||||
struct ib_cm_id *cm_id;
|
||||
struct srpt_device *sdev;
|
||||
@@ -4380,8 +4384,10 @@ static void srpt_add_one(struct ib_device *device)
|
||||
pr_debug("device = %p\n", device);
|
||||
|
||||
sdev = kzalloc(sizeof(*sdev), GFP_KERNEL);
|
||||
if (!sdev)
|
||||
if (!sdev) {
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
sdev->device = device;
|
||||
|
||||
@@ -4397,13 +4403,15 @@ static void srpt_add_one(struct ib_device *device)
|
||||
|
||||
sdev->pd = ib_alloc_pd(device, 0);
|
||||
if (IS_ERR(sdev->pd)) {
|
||||
pr_err("ib_alloc_pd() failed: %ld\n", PTR_ERR(sdev->pd));
|
||||
ret = PTR_ERR(sdev->pd);
|
||||
pr_err("ib_alloc_pd() failed: %d\n", ret);
|
||||
goto free_dev;
|
||||
}
|
||||
|
||||
#ifndef IB_PD_HAS_LOCAL_DMA_LKEY
|
||||
sdev->mr = ib_get_dma_mr(sdev->pd, IB_ACCESS_LOCAL_WRITE);
|
||||
if (IS_ERR(sdev->mr)) {
|
||||
ret = PTR_ERR(sdev->mr);
|
||||
pr_err("ib_get_dma_mr() failed: %ld\n", PTR_ERR(sdev->mr));
|
||||
goto err_pd;
|
||||
}
|
||||
@@ -4441,8 +4449,10 @@ static void srpt_add_one(struct ib_device *device)
|
||||
|
||||
sdev->req_buf_cache = kmem_cache_create("srpt-srq-req-buf",
|
||||
srp_max_req_size, 0, 0, NULL);
|
||||
if (!sdev->req_buf_cache)
|
||||
if (!sdev->req_buf_cache) {
|
||||
ret = -ENOMEM;
|
||||
goto free_srq;
|
||||
}
|
||||
|
||||
sdev->ioctx_ring = (struct srpt_recv_ioctx **)
|
||||
srpt_alloc_ioctx_ring(sdev, sdev->srq_size,
|
||||
@@ -4450,6 +4460,7 @@ static void srpt_add_one(struct ib_device *device)
|
||||
sdev->req_buf_cache,
|
||||
0, DMA_FROM_DEVICE);
|
||||
if (!sdev->ioctx_ring) {
|
||||
ret = -ENOMEM;
|
||||
pr_err("srpt_alloc_ioctx_ring() failed\n");
|
||||
goto free_cache;
|
||||
}
|
||||
@@ -4478,7 +4489,8 @@ static void srpt_add_one(struct ib_device *device)
|
||||
#else
|
||||
INIT_WORK(&sport->work, srpt_refresh_port_work);
|
||||
#endif
|
||||
if (srpt_refresh_port(sport)) {
|
||||
ret = srpt_refresh_port(sport);
|
||||
if (ret) {
|
||||
pr_err("MAD registration failed for %s-%d.\n",
|
||||
dev_name(&sdev->device->dev), i);
|
||||
goto err_ring;
|
||||
@@ -4491,7 +4503,8 @@ static void srpt_add_one(struct ib_device *device)
|
||||
|
||||
cm_id = ib_create_cm_id(device, srpt_cm_handler, sdev);
|
||||
if (IS_ERR(cm_id)) {
|
||||
pr_err("ib_create_cm_id() failed: %ld\n", PTR_ERR(cm_id));
|
||||
ret = PTR_ERR(cm_id);
|
||||
pr_err("ib_create_cm_id() failed: %d\n", ret);
|
||||
goto err_ring;
|
||||
}
|
||||
sdev->cm_id = cm_id;
|
||||
@@ -4521,10 +4534,11 @@ static void srpt_add_one(struct ib_device *device)
|
||||
srpt_event_handler);
|
||||
ib_register_event_handler(&sdev->event_handler);
|
||||
atomic_inc(&srpt_device_count);
|
||||
ret = 0;
|
||||
out:
|
||||
ib_set_client_data(device, &srpt_client, sdev);
|
||||
|
||||
return;
|
||||
return ret;
|
||||
|
||||
err_cm:
|
||||
ib_destroy_cm_id(sdev->cm_id);
|
||||
@@ -4552,6 +4566,13 @@ err:
|
||||
goto out;
|
||||
}
|
||||
|
||||
#if !IB_CLIENT_ADD_ONE_RETURNS_INT
|
||||
static void srpt_add_one_void(struct ib_device *device)
|
||||
{
|
||||
srpt_add_one(device);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* srpt_remove_one() - InfiniBand device removal callback function.
|
||||
*/
|
||||
@@ -4624,7 +4645,11 @@ static void srpt_remove_one(struct ib_device *device, void *client_data)
|
||||
|
||||
static struct ib_client srpt_client = {
|
||||
.name = DRV_NAME,
|
||||
#if IB_CLIENT_ADD_ONE_RETURNS_INT
|
||||
.add = srpt_add_one,
|
||||
#else
|
||||
.add = srpt_add_one_void,
|
||||
#endif
|
||||
.remove = srpt_remove_one
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user