diff --git a/fcst/Kconfig b/fcst/Kconfig
index 4c8890ad4..9c8d21e9c 100644
--- a/fcst/Kconfig
+++ b/fcst/Kconfig
@@ -1,5 +1,15 @@
config FCST
- tristate "SCST target module for Fibre Channel using libfc"
+ tristate "SCST FCoE target module"
depends on LIBFC && SCST
- ---help---
- Supports using libfc HBAs as target adapters with SCST
+ help
+ The fcst kernel module implements an SCST target driver for the FCoE
+ protocol. FCoE or Fibre Channel over Ethernet is a protocol that
+ allows to communicate fibre channel frames over an Ethernet
+ network. Since the FCoE protocol requires a lossless Ethernet
+ network, special network adapters and switches are required.
+ Ethernet network adapters that support FCoE are called Converged
+ Network Adapters (CNA). The standard that makes lossless Ethernet
+ communication possible is called DCB or Data Center Bridging. Since
+ FCoE frames are a kind of Ethernet frames, communication between
+ FCoE clients and servers is limited to a single Ethernet broadcast
+ domain.
diff --git a/ibmvstgt/src/ibmvstgt.c b/ibmvstgt/src/ibmvstgt.c
index 5aa033ddc..102609352 100644
--- a/ibmvstgt/src/ibmvstgt.c
+++ b/ibmvstgt/src/ibmvstgt.c
@@ -342,7 +342,7 @@ static int ibmvstgt_rdma(struct scst_cmd *sc, struct scatterlist *sg, int nsg,
}
#if !defined(CONFIG_SCST_PROC)
-/**
+/*
* ibmvstgt_enable_target() - Allows to enable a target via sysfs.
*/
static int ibmvstgt_enable_target(struct scst_tgt *scst_tgt, bool enable)
@@ -365,7 +365,7 @@ static int ibmvstgt_enable_target(struct scst_tgt *scst_tgt, bool enable)
return 0;
}
-/**
+/*
* ibmvstgt_is_target_enabled() - Allows to query a targets status via sysfs.
*/
static bool ibmvstgt_is_target_enabled(struct scst_tgt *scst_tgt)
@@ -391,7 +391,7 @@ static bool ibmvstgt_is_target_enabled(struct scst_tgt *scst_tgt)
}
#endif
-/**
+/*
* ibmvstgt_release() - Free the resources associated with an SCST target.
*
* Callback function called by the SCST core from scst_unregister_target().
@@ -413,7 +413,7 @@ static int ibmvstgt_release(struct scst_tgt *scst_tgt)
return 0;
}
-/**
+/*
* ibmvstgt_xmit_response() - Transmits the response to a SCSI command.
*
* Callback function called by the SCST core. Must not block. Must ensure that
@@ -460,7 +460,7 @@ out:
return SCST_TGT_RES_SUCCESS;
}
-/**
+/*
* ibmvstgt_rdy_to_xfer() - Transfers data from initiator to target.
*
* Called by the SCST core to transfer data from the initiator to the target
@@ -489,7 +489,7 @@ static int ibmvstgt_rdy_to_xfer(struct scst_cmd *sc)
return SCST_TGT_RES_SUCCESS;
}
-/**
+/*
* ibmvstgt_on_free_cmd() - Free command-private data.
*
* Called by the SCST core. May be called in IRQ context.
@@ -911,8 +911,8 @@ static int crq_queue_create(struct crq_queue *queue, struct srp_target *target)
goto reg_crq_failed;
}
- err = request_irq(vport->dma_dev->irq, &ibmvstgt_interrupt,
- IRQF_DISABLED, "ibmvstgt", target);
+ err = request_irq(vport->dma_dev->irq, &ibmvstgt_interrupt, 0,
+ "ibmvstgt", target);
if (err)
goto req_irq_failed;
@@ -1018,7 +1018,7 @@ static inline struct viosrp_crq *next_crq(struct crq_queue *queue)
return crq;
}
-/**
+/*
* handle_crq() - Process the command/response queue.
*
* Note: Although this function is not thread-safe because of how it is
@@ -1079,7 +1079,7 @@ static int ibmvstgt_get_serial(const struct scst_tgt_dev *tgt_dev, char *buf,
GETBUS(lun), GETTARGET(lun), GETLUN(lun));
}
-/**
+/*
* ibmvstgt_get_transportid() - SCST TransportID callback function.
*
* See also SPC-3, section 7.5.4.5, TransportID for initiator ports using SRP.
@@ -1158,10 +1158,7 @@ static ssize_t unit_address_show(struct device *dev,
return snprintf(buf, PAGE_SIZE, "%x\n", vport->dma_dev->unit_address);
}
-static struct class_attribute ibmvstgt_class_attrs[] = {
- __ATTR_NULL,
-};
-
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
static struct class_device_attribute ibmvstgt_attrs[] = {
#else
@@ -1172,6 +1169,27 @@ static struct device_attribute ibmvstgt_attrs[] = {
__ATTR(unit_address, S_IRUGO, unit_address_show, NULL),
__ATTR_NULL,
};
+#else
+static DEVICE_ATTR_RO(system_id);
+static DEVICE_ATTR_RO(partition_number);
+static DEVICE_ATTR_RO(unit_address);
+
+static struct attribute *ibmvstgt_attrs[] = {
+ &dev_attr_system_id.attr,
+ &dev_attr_partition_number.attr,
+ &dev_attr_unit_address.attr,
+ NULL,
+};
+
+static const struct attribute_group ibmvstgt_attr_group = {
+ .attrs = ibmvstgt_attrs,
+};
+
+static const struct attribute_group *ibmvstgt_groups[] = {
+ &ibmvstgt_attr_group,
+ NULL,
+};
+#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
static void ibmvstgt_dev_release(struct class_device *dev)
@@ -1187,11 +1205,12 @@ static struct class ibmvstgt_class = {
#else
.dev_release = ibmvstgt_dev_release,
#endif
- .class_attrs = ibmvstgt_class_attrs,
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
.class_dev_attrs= ibmvstgt_attrs,
-#else
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0)
.dev_attrs = ibmvstgt_attrs,
+#else
+ .dev_groups = ibmvstgt_groups,
#endif
};
@@ -1200,10 +1219,11 @@ static struct scst_tgt_template ibmvstgt_template = {
.preferred_addr_method = SCST_LUN_ADDR_METHOD_LUN,
#ifdef RHEL_MAJOR
.sg_tablesize = 1024,
-#else
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)
.sg_tablesize = SCSI_MAX_SG_SEGMENTS,
+#else
+ .sg_tablesize = SG_CHUNK_SIZE,
#endif
- .fake_aca = true,
.get_serial = ibmvstgt_get_serial,
#if defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_TRACING)
diff --git a/ibmvstgt/src/scsi_sysfs.c b/ibmvstgt/src/scsi_sysfs.c
index ff748b388..a5daf8ef1 100644
--- a/ibmvstgt/src/scsi_sysfs.c
+++ b/ibmvstgt/src/scsi_sysfs.c
@@ -728,9 +728,11 @@ sdev_store_queue_ramp_up_period(struct device *dev,
{
struct scsi_device *sdev = to_scsi_device(dev);
unsigned long period;
+ int res;
- if (strict_strtoul(buf, 10, &period))
- return -EINVAL;
+ res = kstrtoul(buf, 10, &period);
+ if (res < 0)
+ return res;
sdev->queue_ramp_up_period = msecs_to_jiffies(period);
return period;
diff --git a/iscsi-scst/kernel/Kconfig b/iscsi-scst/kernel/Kconfig
index 9b973ea25..c7651bcad 100644
--- a/iscsi-scst/kernel/Kconfig
+++ b/iscsi-scst/kernel/Kconfig
@@ -3,9 +3,10 @@ config SCST_ISCSI
depends on SCST && INET && LIBCRC32C
default SCST
help
- ISCSI target driver for SCST framework. The iSCSI protocol has been
- defined in RFC 3720. To use it you should download from
- http://scst.sourceforge.net the user space part of it.
+ ISCSI target driver for SCST. The iSCSI protocol has been defined in
+ RFC 3720. To use this target driver you will not only have to enable
+ this kernel module but you will also have to download the
+ corresponding user space daemon from http://scst.sourceforge.net.
config SCST_ISCSI_DEBUG_DIGEST_FAILURES
bool "Simulate iSCSI digest failures"
diff --git a/iscsi-scst/kernel/conn.c b/iscsi-scst/kernel/conn.c
index 4aff2a69d..82845890f 100644
--- a/iscsi-scst/kernel/conn.c
+++ b/iscsi-scst/kernel/conn.c
@@ -196,14 +196,14 @@ static ssize_t iscsi_get_target_ip(struct iscsi_conn *conn,
switch (sk->sk_family) {
case AF_INET:
pos = scnprintf(buf, size,
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 33)
"%u.%u.%u.%u", NIPQUAD(inet_sk(sk)->saddr));
#else
"%pI4", &inet_sk(sk)->inet_saddr);
#endif
break;
case AF_INET6:
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29)
pos = scnprintf(buf, size,
"[%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x]",
NIP6(inet6_sk(sk)->saddr));
diff --git a/iscsi-scst/kernel/isert-scst/Kconfig b/iscsi-scst/kernel/isert-scst/Kconfig
index 1cbc3e477..c5b325b94 100644
--- a/iscsi-scst/kernel/isert-scst/Kconfig
+++ b/iscsi-scst/kernel/isert-scst/Kconfig
@@ -3,7 +3,9 @@ config SCST_ISER
depends on SCST && SCST_ISCSI && INFINIBAND
default SCST
help
- ISER target driver for SCST framework. The iSCSI iSER extension
+ ISER target driver for SCST framework. iSER is a protocol that
+ extends iSCSI to use Remote Direct Memory Access (RDMA). RDMA over
+ InfiniBand, iWARP and RoCE are supported. The iSCSI iSER extension
has been defined in RFC 5046.
If unsure, say "N".
diff --git a/iscsi-scst/kernel/target.c b/iscsi-scst/kernel/target.c
index c19bfd351..97e854bff 100644
--- a/iscsi-scst/kernel/target.c
+++ b/iscsi-scst/kernel/target.c
@@ -685,13 +685,9 @@ static ssize_t iscsi_acg_sess_dedicated_threads_store(struct kobject *kobj,
acg = container_of(kobj, struct scst_acg, acg_kobj);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
res = kstrtoul(buf, 0, &val);
-#else
- res = strict_strtoul(buf, 0, &val);
-#endif
if (res != 0) {
- PRINT_ERROR("strict_strtoul() for %s failed: %d ", buf, res);
+ PRINT_ERROR("kstrtoul() for %s failed: %d ", buf, res);
goto out;
}
diff --git a/iscsi-scst/resource_agents/README b/iscsi-scst/resource_agents/README
index 7c3f712a5..1e7c40d72 100644
--- a/iscsi-scst/resource_agents/README
+++ b/iscsi-scst/resource_agents/README
@@ -13,14 +13,14 @@ mail.
INSTALLATION
-Place files SCSTTarget and SCSTLun into pacemaker ocf directory (usually
+Place files SCSTTarget and SCSTLun into pacemaker ocf directory (usually
/usr/lib/ocf/resource.d or /usr/lib64/ocf/resource.d)
EXAMPLE OF USAGE
-Assumptions:
+Assumptions:
- you are using DRBD as backing device (/dev/drbd1)
- your target iqn is iqn.2012-02.com.mysuperhasan:vdisk.lun
- your nic reserved for iscsi is eth2 and your iscsi subnet is 192.168.103.x
@@ -36,7 +36,7 @@ primitive ISCSI_IP ocf:heartbeat:IPaddr2 \
op monitor interval="10s"
primitive ISCSI_LUN ocf:scst:SCSTLun \
params target_iqn="iqn.2012-02.com.mysuperhasan:vdisk.lun" lun="0" \
- path="/dev/drbd1" handler="vdisk_fileio" device_name="VDISK-LUN10" \
+ path="/dev/drbd1" handler="vdisk_fileio" device_name="VDISK-LUN10" \
additional_parameters="nv_cache=1" \
op monitor interval="10s" timeout="120s"
primitive ISCSI_TGT ocf:scst:SCSTTarget \
@@ -54,7 +54,7 @@ order OR_DRBD_BEFORE_ISCSI inf: MS_DRBD_VOLUME:promote GR_ISCSI:start
CURRENT LIMITATIONS
-Scripts are tested only with straight drbd or lvm over drbd as backing device,
+Scripts are tested only with straight drbd or lvm over drbd as backing device,
using vdisk_fileio, with one lun per target.
CHAP authentication is configurable, but not yet tested. My current version of SCST
diff --git a/iscsi-scst/resource_agents/SCSTLun b/iscsi-scst/resource_agents/SCSTLun
index eb84596be..b723ccf8b 100644
--- a/iscsi-scst/resource_agents/SCSTLun
+++ b/iscsi-scst/resource_agents/SCSTLun
@@ -7,8 +7,8 @@
# and Linux-HA contributors
#
# Based on ISCSILogicalUnit from Florian Haas, Dejan Muhamedagic,
-#
-#
+#
+#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2 of the GNU General Public License as
@@ -43,7 +43,7 @@ meta_data() {
1.0
-Manages SCST iSCSI Logical Unit. An iSCSI Logical unit is a subdivision of
+Manages SCST iSCSI Logical Unit. An iSCSI Logical unit is a subdivision of
an SCSI Target, exported via a daemon that speaks the iSCSI protocol.
Manages iSCSI Logical Units (LUs)
@@ -86,7 +86,7 @@ The handler used (vdisk_blockio, vdisk_fileio, dev_tape ...).
The t10 device ID of LUN. If not specified default SCST value will be used.
-Please note that some initiators, like ESXi, are using only some of the first
+Please note that some initiators, like ESXi, are using only some of the first
characters to identify LUN, like 4-6 chars.
t10 device id
@@ -171,7 +171,7 @@ l_check_module () {
}
l_start_handler () {
- #Check Handler, then load module
+ #Check Handler, then load module
l_check_module
l_load_module $l_module
}
@@ -179,21 +179,21 @@ l_start_handler () {
l_stop_handler () {
local HANDLER_NOT_REQUIRED=true;
#Check if handler is used for other devices, then unload module.
-
+
for i in $( ls "${SYSFS_ROOTPATH}/handlers/${OCF_RESKEY_handler}" ) ; do
if [ -d ${SYSFS_ROOTPATH}/handlers/${OCF_RESKEY_handler}/${i} ]; then
HANDLER_NOT_REQUIRED=false
break
fi
done
-
+
if $HANDLER_NOT_REQUIRED ; then
ocf_log info "Handler ${OCF_RESKEY_handler} not required, unloading kernel module"
- l_check_module
+ l_check_module
rmmod $l_module
return $?
fi
- return 0
+ return 0
}
SCSTLun_usage() {
@@ -210,48 +210,48 @@ SCSTLun_start() {
return $OCF_SUCCESS
fi
- local params
+ local params
if [ ! ${OCF_RESKEY_path} == "" ]; then
params="filename=${OCF_RESKEY_path}"
- fi
- if [ ! ${OCF_RESKEY_additional_parameters} == "" ]; then
+ fi
+ if [ ! ${OCF_RESKEY_additional_parameters} == "" ]; then
params="${params} ${OCF_RESKEY_additional_parameters}"
fi
-
+
ocf_log info "Disabling target ${OCF_RESKEY_target_iqn}"
- echo 0 > "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/enabled"
-
+ echo 0 > "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/enabled"
+
ocf_log info "Starting lun ${OCF_RESKEY_lun} on target ${OCF_RESKEY_target_iqn}"
# Load Handler Modules
l_start_handler #|| exit $OCF_ERR_GENERIC
-
+
# Open Device
ocf_log info "Opening device ${OCF_RESKEY_device_name}, target ${OCF_RESKEY_target_iqn}"
- echo "add_device ${OCF_RESKEY_device_name} ${params// /;}" > "${SCST_BASE}/handlers/${OCF_RESKEY_handler}/mgmt"
+ echo "add_device ${OCF_RESKEY_device_name} ${params// /;}" > "${SCST_BASE}/handlers/${OCF_RESKEY_handler}/mgmt"
if [ $? -ne 0 ]; then
ocf_log err "FAILED to open device ${OCF_RESKEY_device_name}"
return $OCF_ERR_GENERIC
fi
-
+
# Set SCSI SN and t10 dev id
if [ ! ${OCF_RESKEY_scsi_sn} == "" ]; then
ocf_log info "Setting SCSI S/N ${OCF_RESKEY_scsi_sn}"
-
+
echo "${OCF_RESKEY_scsi_sn}" > "${SCST_BASE}/devices/${OCF_RESKEY_device_name}/usn"
if [ $? -ne 0 ]; then
ocf_log warn "FAILED to set SCSI S/N!"
- fi
-
+ fi
+
if [ ! ${OCF_RESKEY_scsi_id} == "" ]; then
ocf_log info "Setting SCSI ID ${OCF_RESKEY_scsi_sn}-${OCF_RESKEY_scsi_id}"
echo "${OCF_RESKEY_scsi_sn}-${OCF_RESKEY_scsi_id}" > "${SCST_BASE}/devices/${OCF_RESKEY_device_name}/t10_dev_id"
if [ $? -ne 0 ]; then
ocf_log warn "FAILED to set SCSI ID!"
- fi
+ fi
fi
- fi
-
+ fi
+
# Assign Device to the Target
ocf_log info "Adding LUN ${OCF_RESKEY_lun}, device ${OCF_RESKEY_device_name}, target ${OCF_RESKEY_target_iqn}"
echo "add ${OCF_RESKEY_device_name} ${OCF_RESKEY_lun}" > "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/luns/mgmt"
@@ -259,11 +259,11 @@ SCSTLun_start() {
ocf_log err "FAILED to add lun ${OCF_RESKEY_lun}"
return $OCF_ERR_GENERIC
fi
-
+
#Enable target
ocf_log info "Enabling target ${OCF_RESKEY_target_iqn}"
echo 1 > "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/enabled"
-
+
ocf_log info "Started lun ${OCF_RESKEY_lun} on target ${OCF_RESKEY_target_iqn}"
#Debugging purpose
@@ -276,23 +276,23 @@ SCSTLun_stop() {
if [ $? = $OCF_SUCCESS ]; then
ocf_log info "Stopping lun ${OCF_RESKEY_lun} on target ${OCF_RESKEY_target_iqn}"
# Disable Target
-
+
ocf_log info "Disabling target ${OCF_RESKEY_target_iqn}"
echo 0 > "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/enabled"
# Drop connections, only if session is using lun
- for i in $( ls "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/sessions" ) ; do
+ for i in $( ls "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/sessions" ) ; do
if [ -d "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/sessions/${i}/luns/${OCF_RESKEY_lun}" ]; then
ocf_log warn "Force closing session to initiator ${i}"
echo 1 > "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/sessions/${i}/force_close"
fi
done
-
+
ocf_log info "Removing LUN ${OCF_RESKEY_lun}, device ${OCF_RESKEY_device_name}, target ${OCF_RESKEY_target_iqn}"
echo "del ${OCF_RESKEY_lun}" >${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/luns/mgmt
if [ $? -ne 0 ]; then
ocf_log err "FAILED to remove LUN ${OCF_RESKEY_lun} from target ${OCF_RESKEY_target_iqn}"
- #return $OCF_ERR_GENERIC
+ #return $OCF_ERR_GENERIC
#Don't exit, try to remove device anyway.
fi
@@ -302,20 +302,20 @@ SCSTLun_stop() {
if [ $? -ne 0 ]; then
ocf_log err "FAILED to remove device ${OCF_RESKEY_device_name}"
return $OCF_ERR_GENERIC
- fi
+ fi
# Enable Target
ocf_log info "Enabling target ${OCF_RESKEY_target_iqn}"
echo 1 > "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/enabled"
-
-
+
+
#Debugging purpose
#scstadmin -write_config /tmp/scst.conf.stop
-
+
#Stop Handler
l_stop_handler || exit $OCF_ERR_GENERIC
fi
-
+
return $OCF_SUCCESS
}
@@ -324,7 +324,7 @@ SCSTLun_monitor() {
if [ -e "${SCST_BASE}/handlers/${OCF_RESKEY_handler}/${OCF_RESKEY_device_name}" ]; then
return $OCF_SUCCESS
fi
-
+
# Check if lun is running.
if [ -e "${ISCSI_BASE}/${OCF_RESKEY_target_iqn}/luns/${OCF_RESKEY_lun}" ]; then
return $OCF_SUCCESS
@@ -336,7 +336,7 @@ SCSTLun_monitor() {
SCSTLun_validate() {
# Do we have all required variables?
# TODO: make this check more precise considering handler used!
-
+
for var in target_iqn lun device_name handler; do
param="OCF_RESKEY_${var}"
if [ -z "${!param}" ]; then
@@ -348,7 +348,7 @@ SCSTLun_validate() {
if ! ocf_is_probe; then
# Do we have all required binaries?
check_binary scstadmin
-
+
# Is the required kernel functionality available?
if [ ! -d ${SCST_BASE} ]; then
ocf_log err "${SCST_BASE} does not exist or is not a directory -- check if required modules are loaded."
diff --git a/iscsi-scst/resource_agents/SCSTTarget b/iscsi-scst/resource_agents/SCSTTarget
index 008eeb745..35120045b 100644
--- a/iscsi-scst/resource_agents/SCSTTarget
+++ b/iscsi-scst/resource_agents/SCSTTarget
@@ -144,21 +144,21 @@ l_load_module () {
}
l_start_service () {
- local running
-
+ local running
+
# Handler modules are loaded in LUN resource agent
-
+
# Check if modules are loaded
if [ ! -d ${SYSFS_PATH} ]; then
ocf_log info "Loading scst Modules"
l_load_module scst || return 1
l_load_module iscsi_scst || return 1
- #Not critical modules, not unloaded on stop.
- l_load_module crc32c
+ #Not critical modules, not unloaded on stop.
+ l_load_module crc32c
l_load_module crc32c_intel
fi
-
+
# Start Daemon
if [ ! "$(pidof ${ISCSI_DAEMON})" ]; then
ocf_run $ISCSI_DAEMON || return 1
@@ -178,7 +178,7 @@ l_stop_service () {
TARGET_NOT_PRESENT=false
fi
done
-
+
#Close sessions
for i in `/bin/ls ${ISCSI_BASE}/${OCF_RESKEY_iqn}/sessions`; do
ocf_log warn "Force closing session to initiator ${i}"
@@ -187,8 +187,8 @@ l_stop_service () {
#Stop process and unload modules
if $TARGET_NOT_PRESENT ; then
- ocf_log warn "Daemon not required, stopping ..."
- pkill -TERM -f $ISCSI_DAEMON
+ ocf_log warn "Daemon not required, stopping ..."
+ pkill -TERM -f $ISCSI_DAEMON
rmmod iscsi_scst
rmmod scst
fi
@@ -212,9 +212,9 @@ SCSTTarget_start() {
local name
local value
local initiator
-
+
# Start Service
- l_start_service
+ l_start_service
# Set incoming username and password globally
if [ "${OCF_RESKEY_incoming_username}" != "" ]; then
echo "add_attribute IncomingUser ${OCF_RESKEY_incoming_username} ${OCF_RESKEY_incoming_password}" > ${ISCSI_BASE}/mgmt
@@ -222,39 +222,39 @@ SCSTTarget_start() {
ocf_log warn "Unable to set CHAP Authentication!"
fi
fi
-
+
ocf_log info "target ${OCF_RESKEY_iqn}: Starting..."
# Create Target
echo "add_target ${OCF_RESKEY_iqn}" > ${ISCSI_BASE}/mgmt || exit $OCF_ERR_GENERIC
-
+
# Set Allowed Portals
- if [ "${OCF_RESKEY_portals}" != "none" ]; then
+ if [ "${OCF_RESKEY_portals}" != "none" ]; then
for param in ${OCF_RESKEY_portals}; do
- ocf_log info "Adding allowed portal ${param} to target ${OCF_RESKEY_iqn}"
+ ocf_log info "Adding allowed portal ${param} to target ${OCF_RESKEY_iqn}"
echo "add_target_attribute ${OCF_RESKEY_iqn} allowed_portal ${param}" > ${ISCSI_BASE}/mgmt
if [ $? -ne 0 ]; then
ocf_log warn "Unable to set Allowed Portal!"
fi
- done
+ done
fi
# Set incoming username and password
- if [ "${OCF_RESKEY_incoming_username}" != "" ]; then
- echo "add_target_attribute ${OCF_RESKEY_iqn} IncomingUser ${OCF_RESKEY_incoming_username} ${OCF_RESKEY_incoming_password}" > ${ISCSI_BASE}/mgmt
+ if [ "${OCF_RESKEY_incoming_username}" != "" ]; then
+ echo "add_target_attribute ${OCF_RESKEY_iqn} IncomingUser ${OCF_RESKEY_incoming_username} ${OCF_RESKEY_incoming_password}" > ${ISCSI_BASE}/mgmt
if [ $? -ne 0 ]; then
ocf_log warn "Unable to set CHAP Authentication!"
- fi
+ fi
fi
-
- ocf_log info "Enabling target ${OCF_RESKEY_iqn}"
+
+ ocf_log info "Enabling target ${OCF_RESKEY_iqn}"
# Enable iSCSI Target
- echo 1 > "${ISCSI_BASE}/enabled" || exit $OCF_ERR_GENERIC
-
+ echo 1 > "${ISCSI_BASE}/enabled" || exit $OCF_ERR_GENERIC
+
ocf_log debug "SCST target ${OCF_RESKEY_iqn}: Started."
-
+
#Debugging purpose
- #scstadmin -write_config /tmp/scst.conf.start
+ #scstadmin -write_config /tmp/scst.conf.start
return $OCF_SUCCESS
}
@@ -262,9 +262,9 @@ SCSTTarget_stop() {
SCSTTarget_monitor
if [ $? = $OCF_SUCCESS ]; then
- local param
+ local param
ocf_log info "target ${OCF_RESKEY_iqn}: Stopping..."
-
+
# Check if there are connected luns
for i in $( ls "${ISCSI_BASE}/${OCF_RESKEY_iqn}/luns" ) ; do
if [ -d "${ISCSI_BASE}/${OCF_RESKEY_iqn}/luns/${i}" ]; then
@@ -272,11 +272,11 @@ SCSTTarget_stop() {
exit $OCF_ERR_GENERIC
fi
done
-
+
# Disable Target
ocf_log info "disabling target ${OCF_RESKEY_iqn}"
echo 0 > ${ISCSI_BASE}/${OCF_RESKEY_iqn}/enabled || exit $OCF_ERR_GENERIC
-
+
#Remove Target
ocf_log info "deleting target ${OCF_RESKEY_iqn}"
echo "del_target ${OCF_RESKEY_iqn}" > ${ISCSI_BASE}/mgmt
@@ -285,20 +285,20 @@ SCSTTarget_stop() {
exit $OCF_ERR_GENERIC
fi
#Debugging purpose
- #scstadmin -write_config /tmp/scst.conf.stop
-
- #Check if other targets are running, then stop service and unload modules
+ #scstadmin -write_config /tmp/scst.conf.stop
+
+ #Check if other targets are running, then stop service and unload modules
l_stop_service
ocf_log info "target ${OCF_RESKEY_iqn}: Stopped."
fi
-
+
return $OCF_SUCCESS
}
SCSTTarget_monitor() {
- if [ -d "${SYSFS_PATH}/${OCF_RESKEY_iqn}" ]; then
+ if [ -d "${SYSFS_PATH}/${OCF_RESKEY_iqn}" ]; then
return $OCF_SUCCESS
- else
+ else
return $OCF_NOT_RUNNING
fi
}
@@ -317,7 +317,7 @@ SCSTTarget_validate() {
if ! ocf_is_probe; then
check_binary scstadmin
- fi
+ fi
return $OCF_SUCCESS
}
diff --git a/iscsi-scst/usr/chap.c b/iscsi-scst/usr/chap.c
index 8ba321246..f5d69b10f 100644
--- a/iscsi-scst/usr/chap.c
+++ b/iscsi-scst/usr/chap.c
@@ -282,7 +282,7 @@ static int chap_decode_string(char *encoded, u8 *decode_buf, int buf_len, int en
if ((strlen(encoded) - 2) > (2 * buf_len)) {
log_error("%s(%d) BUG? "
" buf[%d] !sufficient to decode string[%d]",
- __FUNCTION__, __LINE__, buf_len, (int) strlen(encoded));
+ __func__, __LINE__, buf_len, (int) strlen(encoded));
return CHAP_TARGET_ERROR;
}
decode_hex_string(encoded + 2, decode_buf, buf_len);
@@ -291,7 +291,7 @@ static int chap_decode_string(char *encoded, u8 *decode_buf, int buf_len, int en
if ((strlen(encoded) - 2) > ((buf_len - 1) / 3 + 1) * 4) {
log_error("%s(%d) BUG? "
" buf[%d] !sufficient to decode string[%d]",
- __FUNCTION__, __LINE__, buf_len, (int) strlen(encoded));
+ __func__, __LINE__, buf_len, (int) strlen(encoded));
return CHAP_TARGET_ERROR;
}
decode_base64_string(encoded + 2, decode_buf, buf_len);
@@ -658,7 +658,7 @@ int cmnd_exec_auth_chap(struct connection *conn)
break;
default:
log_error("%s(%d): BUG. unknown conn->auth_state %d",
- __FUNCTION__, __LINE__, conn->auth_state);
+ __func__, __LINE__, conn->auth_state);
res = CHAP_TARGET_ERROR;
}
diff --git a/iscsi-scst/usr/event.c b/iscsi-scst/usr/event.c
index c11efcce2..7dcdd5afa 100644
--- a/iscsi-scst/usr/event.c
+++ b/iscsi-scst/usr/event.c
@@ -1185,7 +1185,7 @@ int nl_open(void)
nl_fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_ISCSI_SCST);
if (nl_fd == -1) {
- log_error("%s %s\n", __FUNCTION__, strerror(errno));
+ log_error("%s %s\n", __func__, strerror(errno));
return -1;
}
@@ -1201,7 +1201,7 @@ int nl_open(void)
res = nl_write(nl_fd, NULL, 0);
if (res < 0) {
- log_error("%s %d\n", __FUNCTION__, res);
+ log_error("%s %d\n", __func__, res);
close(nl_fd);
return res;
}
diff --git a/iscsi-scst/usr/iscsi_scstd.c b/iscsi-scst/usr/iscsi_scstd.c
index eb51baebf..0b4e5ba6d 100644
--- a/iscsi-scst/usr/iscsi_scstd.c
+++ b/iscsi-scst/usr/iscsi_scstd.c
@@ -705,9 +705,9 @@ static void event_loop(void)
"you can decrease iscsi_scstd.c::INCOMING_MAX "
"constant to a lower value, e.g. 128, then "
"recompile and reinstall the user space part "
- "of iSCSI-SCST.", __FUNCTION__);
+ "of iSCSI-SCST.", __func__);
else
- log_error("%s: poll() failed: %s", __FUNCTION__,
+ log_error("%s: poll() failed: %s", __func__,
strerror(errno));
exit(1);
}
diff --git a/scripts/checkpatch b/scripts/checkpatch
index 21797c67f..2c499ded8 100755
--- a/scripts/checkpatch
+++ b/scripts/checkpatch
@@ -1,3 +1,3 @@
#!/bin/bash
-../linux-kernel/scripts/checkpatch.pl -f --show-types --ignore SPDX_LICENSE_TAG,LINUX_VERSION_CODE $(list-source-files | grep -vE 'fcst/linux-patches|patch$|pdf$|png$|ibmvstgt/') | sed 's/^#[0-9]*: FILE: \(.*\):/\1:1:/'
+../linux-kernel/scripts/checkpatch.pl -f --show-types --ignore SPDX_LICENSE_TAG,LINUX_VERSION_CODE,SYMBOLIC_PERMS,CONSTANT_COMPARISON,RETURN_VOID $(list-source-files | grep -vE 'fcst/linux-patches|patch$|pdf$|png$|^ibmvstgt/|^mpt/|^qla_isp/|^mvsas_tgt/') | sed 's/^#[0-9]*: FILE: \(.*\):/\1:1:/'
diff --git a/scst/src/Makefile b/scst/src/Makefile
index 159aa769a..f4ba3fd3b 100644
--- a/scst/src/Makefile
+++ b/scst/src/Makefile
@@ -20,8 +20,8 @@
# all (the default) : make all
# clean : clean files
# extraclean : clean + clean dependencies
-# install : install
-# uninstall : uninstall
+# install : install
+# uninstall : uninstall
#
# Notes :
# - install and uninstall must be made as root
diff --git a/scst/src/dev_handlers/Makefile b/scst/src/dev_handlers/Makefile
index 8d998197f..56d7041e1 100644
--- a/scst/src/dev_handlers/Makefile
+++ b/scst/src/dev_handlers/Makefile
@@ -1,15 +1,15 @@
#
# SCSI target mid-level dev handler's makefile
-#
+#
# Copyright (C) 2015 - 2018 Vladislav Bolkhovitin
# Copyright (C) 2004 - 2005 Leonid Stoljar
# Copyright (C) 2007 - 2018 Western Digital Corporation
-#
+#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, version 2
# of the License.
-#
+#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
@@ -20,8 +20,8 @@
# all (the default) : make all
# clean : clean files
# extraclean : clean + clean dependencies
-# install : install
-# uninstall : uninstall
+# install : install
+# uninstall : uninstall
#
# Notes :
# - install and uninstall must be made as root
diff --git a/scst/src/scst_sysfs.c b/scst/src/scst_sysfs.c
index 7bc3344eb..2ed8ecbeb 100644
--- a/scst/src/scst_sysfs.c
+++ b/scst/src/scst_sysfs.c
@@ -3503,13 +3503,9 @@ static ssize_t scst_dev_sysfs_max_tgt_dev_commands_store(struct kobject *kobj,
dev = container_of(kobj, struct scst_device, dev_kobj);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
res = kstrtol(buf, 0, &newtn);
-#else
- res = strict_strtol(buf, 0, &newtn);
-#endif
if (res != 0) {
- PRINT_ERROR("strtol() for %s failed: %d ", buf, res);
+ PRINT_ERROR("kstrtol() for %s failed: %d ", buf, res);
goto out;
}
if (newtn < 0) {
@@ -3566,13 +3562,9 @@ static ssize_t scst_dev_numa_node_id_store(struct kobject *kobj,
dev = container_of(kobj, struct scst_device, dev_kobj);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
res = kstrtol(buf, 0, &newtn);
-#else
- res = strict_strtol(buf, 0, &newtn);
-#endif
if (res != 0) {
- PRINT_ERROR("strtol() for %s failed: %d ", buf, res);
+ PRINT_ERROR("kstrtol() for %s failed: %d ", buf, res);
goto out;
}
BUILD_BUG_ON(NUMA_NO_NODE != -1);
@@ -4343,11 +4335,7 @@ static ssize_t scst_sess_latency_show(struct kobject *kobj,
return -EINVAL;
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
res = kstrtol(attr->attr.name + 1, 0, &sz);
-#else
- res = strict_strtol(attr->attr.name + 1, 0, &sz);
-#endif
if (WARN_ON(res < 0))
goto out;
i = ilog2(sz) - SCST_STATS_LOG2_SZ_OFFSET;
@@ -6931,11 +6919,7 @@ static ssize_t scst_measure_latency_store(struct kobject *kobj,
long val;
int res;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
res = kstrtol(buf, 0, &val);
-#else
- res = strict_strtol(buf, 0, &val);
-#endif
if (res < 0)
goto out;
@@ -7322,11 +7306,7 @@ static ssize_t scst_force_global_sgv_pool_store(struct kobject *kobj,
TRACE_ENTRY();
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)
res = kstrtoul(buf, 0, &v);
-#else
- res = strict_strtoul(buf, 0, &v);
-#endif
if (res)
goto out;
diff --git a/scst_local/in-tree/Kconfig b/scst_local/in-tree/Kconfig
index da40460cf..da6b9d492 100644
--- a/scst_local/in-tree/Kconfig
+++ b/scst_local/in-tree/Kconfig
@@ -1,7 +1,7 @@
config SCST_LOCAL
tristate "SCST Local driver"
depends on SCST && !HIGHMEM4G && !HIGHMEM64G
- ---help---
+ help
This module provides a LLD SCSI driver that connects to
the SCST target mode subsystem in a loop-back manner.
It allows you to test target-mode device-handlers locally.
diff --git a/scst_local/scst_local.c b/scst_local/scst_local.c
index 0528af537..5ce4c1a53 100644
--- a/scst_local/scst_local.c
+++ b/scst_local/scst_local.c
@@ -11,7 +11,7 @@
*/
#include
-
+#include
#include
#include
#include
@@ -24,7 +24,15 @@
#include
#include
#include
-
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
+#include
+#else
+#include
+static inline u32 blk_mq_unique_tag(struct request *rq)
+{
+ return rq->tag;
+}
+#endif
#include
#include
#include
diff --git a/scstadmin/README b/scstadmin/README
index 2a39fb629..da8337339 100644
--- a/scstadmin/README
+++ b/scstadmin/README
@@ -97,7 +97,7 @@ HANDLER dev_cdrom {
DEVICE 2:0:0:0
}
-Virtual devices are opened through special CREATE attributes. For example, a
+Virtual devices are opened through special CREATE attributes. For example, a
virtual disk named "disk1" pointing to a disk partition /dev/hda1 would be look
like:
diff --git a/scstadmin/README.procfs b/scstadmin/README.procfs
index d00edaa11..4ccc9cffd 100644
--- a/scstadmin/README.procfs
+++ b/scstadmin/README.procfs
@@ -29,7 +29,7 @@ The following pertains to the older procfs based SCST.
The scstadmin script is much more functional than scst_db at this point but uses a
standard text-based config file. The original thought behind scst_db was to write
a daemon process which would except network connections and issue SCST commands. A
-client app would then connect to that port.
+client app would then connect to that port.
Copy scst.conf to /etc and edit it to your liking. if you have an existing configuration
then have scstadmin write it out to a config file for you:
diff --git a/scstadmin/init.d/scst b/scstadmin/init.d/scst
index b4dd07724..dda4fdecb 100755
--- a/scstadmin/init.d/scst
+++ b/scstadmin/init.d/scst
@@ -250,7 +250,7 @@ start_scst() {
options=""
if [ "$(basename "$d")" = "iscsi-scstd" ]; then
options="${ISCSID_OPTIONS}"
- fi
+ fi
if ! start_daemon $d $options; then
echo "Starting $d failed"
unload_scst