extra-repos/systemd: open-iscsi, open-isns new aports
Signed-off-by: Robert Eckelmann <longnoserob@postmarketos.org> [ci:skip-vercheck] Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8938>
This commit is contained in:
@@ -0,0 +1,181 @@
|
|||||||
|
From ff6e62ab9a4ca256525bff4126c3481be3ed8a86 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Leonardo Arena <rnalrd@alpinelinux.org>
|
||||||
|
Date: Mon, 14 Oct 2024 05:54:55 +0000
|
||||||
|
Subject: [PATCH] make shell scripts POSIX compatible
|
||||||
|
|
||||||
|
---
|
||||||
|
iscsiuio/src/unix/build_date.sh | 32 +++++++++++------------
|
||||||
|
utils/iscsi-gen-initiatorname.sh.template | 24 +++++++++--------
|
||||||
|
utils/iscsi_discovery.sh | 4 +--
|
||||||
|
utils/iscsi_fw_login.sh.template | 2 +-
|
||||||
|
utils/iscsi_offload.sh | 4 +--
|
||||||
|
5 files changed, 33 insertions(+), 33 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/iscsiuio/src/unix/build_date.sh b/iscsiuio/src/unix/build_date.sh
|
||||||
|
index 65888fe..f6252e7 100755
|
||||||
|
--- a/iscsiuio/src/unix/build_date.sh
|
||||||
|
+++ b/iscsiuio/src/unix/build_date.sh
|
||||||
|
@@ -1,9 +1,4 @@
|
||||||
|
-#!/bin/bash
|
||||||
|
-#
|
||||||
|
-# build the build_date.c and build_date.h files
|
||||||
|
-#
|
||||||
|
-# (bash required for getopts)
|
||||||
|
-#
|
||||||
|
+#!/bin/sh
|
||||||
|
|
||||||
|
THIS_CMD=${0##*/}
|
||||||
|
|
||||||
|
@@ -20,17 +15,20 @@ usage()
|
||||||
|
generate_source_file()
|
||||||
|
{
|
||||||
|
outfile="$1"
|
||||||
|
- if [ -n "$SOURCE_DATE_EPOCH" ] ; then
|
||||||
|
- echo 'char *build_date = "'`LC_ALL=C.UTF-8 date --date=@$SOURCE_DATE_EPOCH -u`'";' >"$outfile"
|
||||||
|
+ if [ -n "$SOURCE_DATE_EPOCH" ]; then
|
||||||
|
+ # Convert epoch to human-readable date; assume GNU date or fallback to awk.
|
||||||
|
+ build_date=$(date -u -d "@$SOURCE_DATE_EPOCH" 2>/dev/null || \
|
||||||
|
+ awk -v epoch="$SOURCE_DATE_EPOCH" 'BEGIN { print strftime("%Y-%m-%d %H:%M:%S", epoch) }')
|
||||||
|
+ echo "char *build_date = \"$build_date\";" > "$outfile"
|
||||||
|
else
|
||||||
|
- echo 'char *build_date = "'`date`'";' >"$outfile"
|
||||||
|
+ echo "char *build_date = \"$(date)\";" > "$outfile"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_include_file()
|
||||||
|
{
|
||||||
|
outfile="$1"
|
||||||
|
- echo 'extern char *build_date;' >"$outfile"
|
||||||
|
+ echo 'extern char *build_date;' > "$outfile"
|
||||||
|
}
|
||||||
|
|
||||||
|
do_source=
|
||||||
|
@@ -38,17 +36,17 @@ do_include=
|
||||||
|
|
||||||
|
while getopts :c:i:S:h opt; do
|
||||||
|
case "$opt" in
|
||||||
|
- c) do_source="$OPTARG" ;;
|
||||||
|
- i) do_include="$OPTARG" ;;
|
||||||
|
- S) SOURCE_DATE_EPOCH="$OPTARG" ;;
|
||||||
|
- h) usage; exit 0 ;;
|
||||||
|
- ?) echo "unknown option" 1>&2; usage; exit 1 ;;
|
||||||
|
+ c) do_source="$OPTARG" ;;
|
||||||
|
+ i) do_include="$OPTARG" ;;
|
||||||
|
+ S) SOURCE_DATE_EPOCH="$OPTARG" ;;
|
||||||
|
+ h) usage; exit 0 ;;
|
||||||
|
+ ?) echo "unknown option" 1>&2; usage; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -n "$do_source" ]; then
|
||||||
|
- generate_source_file $do_source
|
||||||
|
+ generate_source_file "$do_source"
|
||||||
|
fi
|
||||||
|
if [ -n "$do_include" ]; then
|
||||||
|
- generate_include_file $do_include
|
||||||
|
+ generate_include_file "$do_include"
|
||||||
|
fi
|
||||||
|
diff --git a/utils/iscsi-gen-initiatorname.sh.template b/utils/iscsi-gen-initiatorname.sh.template
|
||||||
|
index 5c2bfdf..474c0af 100644
|
||||||
|
--- a/utils/iscsi-gen-initiatorname.sh.template
|
||||||
|
+++ b/utils/iscsi-gen-initiatorname.sh.template
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/bin/bash
|
||||||
|
+#!/bin/sh
|
||||||
|
#
|
||||||
|
# iscsi-gen-initiatorname
|
||||||
|
#
|
||||||
|
@@ -16,7 +16,7 @@ INAME_DIR="@HOMEDIR@"
|
||||||
|
INAME_FILE="$INAME_DIR/initiatorname.iscsi"
|
||||||
|
|
||||||
|
# our default IQN prefix
|
||||||
|
-DEFAULT_IQN_PREFIX="iqn.1996-04.de.suse:01"
|
||||||
|
+DEFAULT_IQN_PREFIX="iqn.1996-04.org.alpinelinux:01"
|
||||||
|
|
||||||
|
#
|
||||||
|
# set up comments for initiatorname files using variables
|
||||||
|
@@ -86,15 +86,17 @@ usage_and_exit()
|
||||||
|
#
|
||||||
|
# usage: INAME=$(kernel_supplied_initiatorname)
|
||||||
|
#
|
||||||
|
-kernel_supplied_initiatorname()
|
||||||
|
-{
|
||||||
|
- kcl="$(</proc/cmdline)"
|
||||||
|
- if [[ "$kcl" =~ rd.initiatorname ]] ; then
|
||||||
|
- kcl=${kcl##*rd.initiatorname=}
|
||||||
|
- echo ${kcl%% *}
|
||||||
|
- else
|
||||||
|
- echo ""
|
||||||
|
- fi
|
||||||
|
+kernel_supplied_initiatorname() {
|
||||||
|
+ kcl="$(cat /proc/cmdline)"
|
||||||
|
+ case "$kcl" in
|
||||||
|
+ *rd.initiatorname=*)
|
||||||
|
+ kcl=${kcl#*rd.initiatorname=}
|
||||||
|
+ echo "${kcl%% *}"
|
||||||
|
+ ;;
|
||||||
|
+ *)
|
||||||
|
+ echo ""
|
||||||
|
+ ;;
|
||||||
|
+ esac
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
diff --git a/utils/iscsi_discovery.sh b/utils/iscsi_discovery.sh
|
||||||
|
index be2f390..5547ad3 100755
|
||||||
|
--- a/utils/iscsi_discovery.sh
|
||||||
|
+++ b/utils/iscsi_discovery.sh
|
||||||
|
@@ -72,7 +72,7 @@ parse_cmdline()
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check if the IP address is valid
|
||||||
|
- ip=`echo $1 | awk -F'.' '$1 != "" && $1 <=255 && $2 != "" && $2 <= 255 && $3 != "" && $3 <= 255 && $4 != "" && $4 <= 255 {print $0}'`
|
||||||
|
+ ip=$(echo $1 | awk -F'.' '$1 != "" && $1 <=255 && $2 != "" && $2 <= 255 && $3 != "" && $3 <= 255 && $4 != "" && $4 <= 255 {print $0}')
|
||||||
|
if [ -z "$ip" ]; then
|
||||||
|
echo "$1 is not a vaild IP address!"
|
||||||
|
exit 1
|
||||||
|
@@ -131,7 +131,7 @@ try_login()
|
||||||
|
ret=$?
|
||||||
|
if [ ${ret} = 0 ]; then
|
||||||
|
echo "Set target ${target} to automatic login over ${transport} to portal ${portal}"
|
||||||
|
- ((connected++))
|
||||||
|
+ connected=$((connected + 1))
|
||||||
|
if [ "$log_out" = "1" ]; then
|
||||||
|
iscsiadm -m node --targetname ${target} --portal ${portal} --logout
|
||||||
|
fi
|
||||||
|
diff --git a/utils/iscsi_fw_login.sh.template b/utils/iscsi_fw_login.sh.template
|
||||||
|
index aae9e4c..6758da2 100644
|
||||||
|
--- a/utils/iscsi_fw_login.sh.template
|
||||||
|
+++ b/utils/iscsi_fw_login.sh.template
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/bin/bash
|
||||||
|
+#!/bin/sh
|
||||||
|
#
|
||||||
|
# iscsi_fw_login -- login to iscsi firmware targets, if any
|
||||||
|
#
|
||||||
|
diff --git a/utils/iscsi_offload.sh b/utils/iscsi_offload.sh
|
||||||
|
index 1869fe1..6a12338 100755
|
||||||
|
--- a/utils/iscsi_offload.sh
|
||||||
|
+++ b/utils/iscsi_offload.sh
|
||||||
|
@@ -222,7 +222,7 @@ elif [ "$mod" = "be2iscsi" ] ; then
|
||||||
|
mac=$(iscsi_macaddress_from_pcifn $pcipath $IFNAME 1)
|
||||||
|
elif [ "$mod" = "qla4xxx" ] ; then
|
||||||
|
mac=$(iscsi_macaddress_from_pcifn $pcipath $IFNAME 1)
|
||||||
|
-elif [ "$mod" = "qede" -o "$mod" = "qedi" ] ; then
|
||||||
|
+elif [ "$mod" = "qede" ] || [ "$mod" = "qedi" ] ; then
|
||||||
|
mac=$(iscsi_macaddress_from_pcifn $pcipath $IFNAME 4)
|
||||||
|
fi
|
||||||
|
|
||||||
|
@@ -239,7 +239,7 @@ if iscsiadm -m iface -I $ioe_iface > /dev/null 2>&1 ; then
|
||||||
|
ioe_mac=$(iscsiadm -m iface -I $ioe_iface 2> /dev/null| sed -n "s/iface\.hwaddress = \(.*\)/\1/p")
|
||||||
|
ioe_mod=$(iscsiadm -m iface -I $ioe_iface 2> /dev/null| sed -n "s/iface\.transport_name = \(.*\)/\1/p")
|
||||||
|
ipaddr=$(iscsiadm -m iface -I $ioe_iface 2> /dev/null| sed -n "s/iface\.ipaddress = \(.*\)/\1/p")
|
||||||
|
- if [ "$ipaddr" == "<empty>" ] ; then
|
||||||
|
+ if [ "$ipaddr" = "<empty>" ] ; then
|
||||||
|
ipaddr=
|
||||||
|
fi
|
||||||
|
elif [ "$mod" = "be2iscsi" ] ; then
|
||||||
|
--
|
||||||
|
2.46.2
|
||||||
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# Forked from Alpine for providing a version with systemd
|
||||||
|
maintainer="Robert Eckelmann <longnoserob@postmarketos.org>"
|
||||||
|
pkgname=open-iscsi
|
||||||
|
_pkgver=2.1.10
|
||||||
|
pkgver=9999$_pkgver
|
||||||
|
pkgrel=4
|
||||||
|
pkgdesc="High performance, transport independent, multi-platform iSCSI initiator"
|
||||||
|
url="https://www.open-iscsi.com"
|
||||||
|
arch="all"
|
||||||
|
license="GPL-2.0-only"
|
||||||
|
makedepends="cmake kmod-dev libmount linux-headers openssl-dev>3
|
||||||
|
open-isns-dev util-linux-dev meson bash perl systemd-dev"
|
||||||
|
depends="systemd-libs"
|
||||||
|
options="!check"
|
||||||
|
subpackages="$pkgname-dev $pkgname-libs $pkgname-doc $pkgname-systemd $pkgname-udev"
|
||||||
|
install="$pkgname.post-install"
|
||||||
|
source="$pkgname-$_pkgver.tar.gz::https://github.com/open-iscsi/open-iscsi/archive/$_pkgver.tar.gz
|
||||||
|
iscsid.conf
|
||||||
|
musl-fixes.patch
|
||||||
|
add-missing-headers.patch
|
||||||
|
dont-use-lib64.patch
|
||||||
|
remove-werror.patch
|
||||||
|
0001-make-shell-scripts-POSIX-compatible.patch
|
||||||
|
"
|
||||||
|
builddir="$srcdir/open-iscsi-$_pkgver"
|
||||||
|
|
||||||
|
build() {
|
||||||
|
# musl doesn't have glob_onlydir but by spec it's also not guaranteed to return only dirs anyway
|
||||||
|
CFLAGS="$CFLAGS -DGLOB_ONLYDIR=0" \
|
||||||
|
abuild-meson \
|
||||||
|
-Db_lto=true \
|
||||||
|
-Drulesdir="/usr/lib/udev/rules.d" \
|
||||||
|
. output
|
||||||
|
meson compile -C output
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
meson test --print-errorlogs -C output
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
DESTDIR="$pkgdir" meson install --no-rebuild -C output
|
||||||
|
install -Dm644 "$srcdir"/iscsid.conf "$pkgdir"/etc/iscsi/iscsid.conf
|
||||||
|
rm "$pkgdir"/etc/iscsi/initiatorname.iscsi
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sums="
|
||||||
|
18b92d3e9a85d8de66734d95e9ca74a8acc5167a98830134c18ad5e226b29a00d358f952edfab67b643c454ec63c0a382c7ab7e7e76970f7574b46cea0d5c82d open-iscsi-2.1.10.tar.gz
|
||||||
|
4cc7c1923047616d908806aab96d468cb7b99ff9f8a9e02a039866b66db4ae856bd9f414854712d8a57c21614674f4468736bce26a4199c2ff054a165bca26e0 iscsid.conf
|
||||||
|
1b89ffd6de0dc7bb63fc2702a97e49df4369158c66ee609acfc041b1677c07fbd964b7a709f1f324fa51a9842d4d3e11611d9783e18d526372d468163c0ac8db musl-fixes.patch
|
||||||
|
104b559eb368459a7151657fbca63927b6b1032bda272e903a1633c8b9d3ed199f2c5cca0e6741bcd5fa6e860d1ff2d111caf58d60d9f0a736ad767e8ae0427b add-missing-headers.patch
|
||||||
|
86a9c4be4abd34821f156f9df586c530dc2b0efc96e961cb15fd22846856cc1e76aae85806e8d0eb9f3d3e3acd7f73fe8d2a1de8944903b503e256e6a99bb2dd dont-use-lib64.patch
|
||||||
|
d99ef789d1aab1e7ba81e3f2b334a9518f1174cd53b4600bfd7e866973cdfa87664b2161c994ae7c35526a7d9165e0e2b3036f7dacc139b90fa3d0a90b6f6599 remove-werror.patch
|
||||||
|
e0cdca47e4dd4ca6684ab7ccae49a06253a7bc3de722a8239f692ee84431d8a63d4411f8584976d13f2907911551bf0d5871a315bd4d9f72e61b9654b34cb29b 0001-make-shell-scripts-POSIX-compatible.patch
|
||||||
|
"
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
diff --git a/iscsiuio/src/unix/libs/bnx2x.c b/iscsiuio/src/unix/libs/bnx2x.c
|
||||||
|
index c5e7b71..94d2663 100644
|
||||||
|
--- a/iscsiuio/src/unix/libs/bnx2x.c
|
||||||
|
+++ b/iscsiuio/src/unix/libs/bnx2x.c
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+#include <netinet/if_ether.h>
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2009-2011, Broadcom Corporation
|
||||||
|
* Copyright (c) 2014, QLogic Corporation
|
||||||
|
diff --git a/usr/idbm.c b/usr/idbm.c
|
||||||
|
index a0207e2..f347332 100644
|
||||||
|
--- a/usr/idbm.c
|
||||||
|
+++ b/usr/idbm.c
|
||||||
|
@@ -1,3 +1,4 @@
|
||||||
|
+#include <fcntl.h>
|
||||||
|
/*
|
||||||
|
* iSCSI Discovery Database Library
|
||||||
|
*
|
||||||
|
diff --git a/usr/iscsi_net_util.c b/usr/iscsi_net_util.c
|
||||||
|
index 6339082..2a75e62 100644
|
||||||
|
--- a/usr/iscsi_net_util.c
|
||||||
|
+++ b/usr/iscsi_net_util.c
|
||||||
|
@@ -31,7 +31,7 @@
|
||||||
|
#include <linux/sockios.h>
|
||||||
|
#include <linux/if_vlan.h>
|
||||||
|
#include <net/if_arp.h>
|
||||||
|
-#include <linux/if_ether.h>
|
||||||
|
+#include <netinet/if_ether.h>
|
||||||
|
|
||||||
|
#include "sysdeps.h"
|
||||||
|
#include "ethtool-copy.h"
|
||||||
|
--- a/iscsiuio/src/unix/libs/bnx2x.c
|
||||||
|
+++ b/iscsiuio/src/unix/libs/bnx2x.c
|
||||||
|
@@ -47,6 +47,7 @@
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
+#include <sys/sysmacros.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/user.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
--- a/iscsiuio/src/unix/libs/bnx2.c
|
||||||
|
+++ b/iscsiuio/src/unix/libs/bnx2.c
|
||||||
|
@@ -42,6 +42,7 @@
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
+#include <sys/sysmacros.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/user.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
--- a/iscsiuio/src/unix/libs/qedi.c.orig
|
||||||
|
+++ b/iscsiuio/src/unix/libs/qedi.c
|
||||||
|
@@ -46,6 +46,7 @@
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
+#include <netinet/if_ether.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/sockios.h>
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
diff --git a/libopeniscsiusr/Makefile b/libopeniscsiusr/Makefile
|
||||||
|
index bf7c96c..eb9da59 100644
|
||||||
|
--- a/libopeniscsiusr/Makefile
|
||||||
|
+++ b/libopeniscsiusr/Makefile
|
||||||
|
@@ -13,8 +13,8 @@ prefix ?= /usr
|
||||||
|
INSTALL ?= install
|
||||||
|
|
||||||
|
ifndef LIB_DIR
|
||||||
|
- ifeq ($(shell test -d /lib64 && echo 1),1)
|
||||||
|
- LIB_DIR=$(prefix)/lib64
|
||||||
|
+ ifeq ($(shell test -d /lib && echo 1),1)
|
||||||
|
+ LIB_DIR=$(prefix)/lib
|
||||||
|
else
|
||||||
|
LIB_DIR=$(prefix)/lib
|
||||||
|
endif
|
||||||
@@ -0,0 +1,339 @@
|
|||||||
|
#
|
||||||
|
# Open-iSCSI default configuration.
|
||||||
|
# Could be located at /etc/iscsi/iscsid.conf or ~/.iscsid.conf
|
||||||
|
#
|
||||||
|
# Note: To set any of these values for a specific node/session run
|
||||||
|
# the iscsiadm --mode node --op command for the value. See the README
|
||||||
|
# and man page for iscsiadm for details on the --op command.
|
||||||
|
#
|
||||||
|
|
||||||
|
######################
|
||||||
|
# iscsid daemon config
|
||||||
|
######################
|
||||||
|
#
|
||||||
|
# If you want iscsid to start the first time an iscsi tool
|
||||||
|
# needs to access it, instead of starting it when the init
|
||||||
|
# scripts run, set the iscsid startup command here. This
|
||||||
|
# should normally only need to be done by distro package
|
||||||
|
# maintainers. If you leave the iscsid daemon running all
|
||||||
|
# the time then leave this attribute commented out.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Alpine startup
|
||||||
|
iscsid.startup = /etc/init.d/iscsid start
|
||||||
|
#
|
||||||
|
# Default for Fedora and RHEL. (uncomment to activate).
|
||||||
|
# iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket
|
||||||
|
#
|
||||||
|
# Default if you are not using systemd (uncomment to activate)
|
||||||
|
# iscsid.startup = /usr/bin/service start iscsid
|
||||||
|
|
||||||
|
# Check for active mounts on devices reachable through a session
|
||||||
|
# and refuse to logout if there are any. Defaults to "No".
|
||||||
|
# iscsid.safe_logout = Yes
|
||||||
|
|
||||||
|
#############################
|
||||||
|
# NIC/HBA and driver settings
|
||||||
|
#############################
|
||||||
|
# open-iscsi can create a session and bind it to a NIC/HBA.
|
||||||
|
# To set this up see the example iface config file.
|
||||||
|
|
||||||
|
#*****************
|
||||||
|
# Startup settings
|
||||||
|
#*****************
|
||||||
|
|
||||||
|
# To request that the iscsi initd scripts startup a session set to "automatic".
|
||||||
|
# node.startup = automatic
|
||||||
|
#
|
||||||
|
# To manually startup the session set to "manual". The default is manual.
|
||||||
|
node.startup = manual
|
||||||
|
|
||||||
|
# For "automatic" startup nodes, setting this to "Yes" will try logins on each
|
||||||
|
# available iface until one succeeds, and then stop. The default "No" will try
|
||||||
|
# logins on all available ifaces simultaneously.
|
||||||
|
node.leading_login = No
|
||||||
|
|
||||||
|
# *************
|
||||||
|
# CHAP Settings
|
||||||
|
# *************
|
||||||
|
|
||||||
|
# To enable CHAP authentication set node.session.auth.authmethod
|
||||||
|
# to CHAP. The default is None.
|
||||||
|
#node.session.auth.authmethod = CHAP
|
||||||
|
|
||||||
|
# To configure which CHAP algorithms to enable set
|
||||||
|
# node.session.auth.chap_algs to a comma seperated list.
|
||||||
|
# The algorithms should be listen with most prefered first.
|
||||||
|
# Valid values are MD5, SHA1, SHA256, and SHA3-256.
|
||||||
|
# The default is MD5.
|
||||||
|
#node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5
|
||||||
|
|
||||||
|
# To set a CHAP username and password for initiator
|
||||||
|
# authentication by the target(s), uncomment the following lines:
|
||||||
|
#node.session.auth.username = username
|
||||||
|
#node.session.auth.password = password
|
||||||
|
|
||||||
|
# To set a CHAP username and password for target(s)
|
||||||
|
# authentication by the initiator, uncomment the following lines:
|
||||||
|
#node.session.auth.username_in = username_in
|
||||||
|
#node.session.auth.password_in = password_in
|
||||||
|
|
||||||
|
# To enable CHAP authentication for a discovery session to the target
|
||||||
|
# set discovery.sendtargets.auth.authmethod to CHAP. The default is None.
|
||||||
|
#discovery.sendtargets.auth.authmethod = CHAP
|
||||||
|
|
||||||
|
# To set a discovery session CHAP username and password for the initiator
|
||||||
|
# authentication by the target(s), uncomment the following lines:
|
||||||
|
#discovery.sendtargets.auth.username = username
|
||||||
|
#discovery.sendtargets.auth.password = password
|
||||||
|
|
||||||
|
# To set a discovery session CHAP username and password for target(s)
|
||||||
|
# authentication by the initiator, uncomment the following lines:
|
||||||
|
#discovery.sendtargets.auth.username_in = username_in
|
||||||
|
#discovery.sendtargets.auth.password_in = password_in
|
||||||
|
|
||||||
|
# ********
|
||||||
|
# Timeouts
|
||||||
|
# ********
|
||||||
|
#
|
||||||
|
# See the iSCSI README's Advanced Configuration section for tips
|
||||||
|
# on setting timeouts when using multipath or doing root over iSCSI.
|
||||||
|
#
|
||||||
|
# To specify the length of time to wait for session re-establishment
|
||||||
|
# before failing SCSI commands back to the application when running
|
||||||
|
# the Linux SCSI Layer error handler, edit the line.
|
||||||
|
# The value is in seconds and the default is 120 seconds.
|
||||||
|
# Special values:
|
||||||
|
# - If the value is 0, IO will be failed immediately.
|
||||||
|
# - If the value is less than 0, IO will remain queued until the session
|
||||||
|
# is logged back in, or until the user runs the logout command.
|
||||||
|
node.session.timeo.replacement_timeout = 120
|
||||||
|
|
||||||
|
# To specify the time to wait for login to complete, edit the line.
|
||||||
|
# The value is in seconds and the default is 15 seconds.
|
||||||
|
node.conn[0].timeo.login_timeout = 15
|
||||||
|
|
||||||
|
# To specify the time to wait for logout to complete, edit the line.
|
||||||
|
# The value is in seconds and the default is 15 seconds.
|
||||||
|
node.conn[0].timeo.logout_timeout = 15
|
||||||
|
|
||||||
|
# Time interval to wait for on connection before sending a ping.
|
||||||
|
node.conn[0].timeo.noop_out_interval = 5
|
||||||
|
|
||||||
|
# To specify the time to wait for a Nop-out response before failing
|
||||||
|
# the connection, edit this line. Failing the connection will
|
||||||
|
# cause IO to be failed back to the SCSI layer. If using dm-multipath
|
||||||
|
# this will cause the IO to be failed to the multipath layer.
|
||||||
|
node.conn[0].timeo.noop_out_timeout = 5
|
||||||
|
|
||||||
|
# To specify the time to wait for abort response before
|
||||||
|
# failing the operation and trying a logical unit reset edit the line.
|
||||||
|
# The value is in seconds and the default is 15 seconds.
|
||||||
|
node.session.err_timeo.abort_timeout = 15
|
||||||
|
|
||||||
|
# To specify the time to wait for a logical unit response
|
||||||
|
# before failing the operation and trying session re-establishment
|
||||||
|
# edit the line.
|
||||||
|
# The value is in seconds and the default is 30 seconds.
|
||||||
|
node.session.err_timeo.lu_reset_timeout = 30
|
||||||
|
|
||||||
|
# To specify the time to wait for a target response
|
||||||
|
# before failing the operation and trying session re-establishment
|
||||||
|
# edit the line.
|
||||||
|
# The value is in seconds and the default is 30 seconds.
|
||||||
|
node.session.err_timeo.tgt_reset_timeout = 30
|
||||||
|
|
||||||
|
|
||||||
|
#******
|
||||||
|
# Retry
|
||||||
|
#******
|
||||||
|
|
||||||
|
# To specify the number of times iscsid should retry a login
|
||||||
|
# if the login attempt fails due to the node.conn[0].timeo.login_timeout
|
||||||
|
# expiring modify the following line. Note that if the login fails
|
||||||
|
# quickly (before node.conn[0].timeo.login_timeout fires) because the network
|
||||||
|
# layer or the target returns an error, iscsid may retry the login more than
|
||||||
|
# node.session.initial_login_retry_max times.
|
||||||
|
#
|
||||||
|
# This retry count along with node.conn[0].timeo.login_timeout
|
||||||
|
# determines the maximum amount of time iscsid will try to
|
||||||
|
# establish the initial login. node.session.initial_login_retry_max is
|
||||||
|
# multiplied by the node.conn[0].timeo.login_timeout to determine the
|
||||||
|
# maximum amount.
|
||||||
|
#
|
||||||
|
# The default node.session.initial_login_retry_max is 8 and
|
||||||
|
# node.conn[0].timeo.login_timeout is 15 so we have:
|
||||||
|
#
|
||||||
|
# node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max =
|
||||||
|
# 120 seconds
|
||||||
|
#
|
||||||
|
# Valid values are any integer value. This only
|
||||||
|
# affects the initial login. Setting it to a high value can slow
|
||||||
|
# down the iscsi service startup. Setting it to a low value can
|
||||||
|
# cause a session to not get logged into, if there are distuptions
|
||||||
|
# during startup or if the network is not ready at that time.
|
||||||
|
node.session.initial_login_retry_max = 8
|
||||||
|
|
||||||
|
################################
|
||||||
|
# session and device queue depth
|
||||||
|
################################
|
||||||
|
|
||||||
|
# To control how many commands the session will queue set
|
||||||
|
# node.session.cmds_max to an integer between 2 and 2048 that is also
|
||||||
|
# a power of 2. The default is 128.
|
||||||
|
node.session.cmds_max = 128
|
||||||
|
|
||||||
|
# To control the device's queue depth set node.session.queue_depth
|
||||||
|
# to a value between 1 and 1024. The default is 32.
|
||||||
|
node.session.queue_depth = 32
|
||||||
|
|
||||||
|
##################################
|
||||||
|
# MISC SYSTEM PERFORMANCE SETTINGS
|
||||||
|
##################################
|
||||||
|
|
||||||
|
# For software iscsi (iscsi_tcp) and iser (ib_iser) each session
|
||||||
|
# has a thread used to transmit or queue data to the hardware. For
|
||||||
|
# cxgb3i you will get a thread per host.
|
||||||
|
#
|
||||||
|
# Setting the thread's priority to a lower value can lead to higher throughput
|
||||||
|
# and lower latencies. The lowest value is -20. Setting the priority to
|
||||||
|
# a higher value, can lead to reduced IO performance, but if you are seeing
|
||||||
|
# the iscsi or scsi threads dominate the use of the CPU then you may want
|
||||||
|
# to set this value higher.
|
||||||
|
#
|
||||||
|
# Note: For cxgb3i you must set all sessions to the same value, or the
|
||||||
|
# behavior is not defined.
|
||||||
|
#
|
||||||
|
# The default value is -20. The setting must be between -20 and 20.
|
||||||
|
node.session.xmit_thread_priority = -20
|
||||||
|
|
||||||
|
|
||||||
|
#***************
|
||||||
|
# iSCSI settings
|
||||||
|
#***************
|
||||||
|
|
||||||
|
# To enable R2T flow control (i.e., the initiator must wait for an R2T
|
||||||
|
# command before sending any data), uncomment the following line:
|
||||||
|
#
|
||||||
|
#node.session.iscsi.InitialR2T = Yes
|
||||||
|
#
|
||||||
|
# To disable R2T flow control (i.e., the initiator has an implied
|
||||||
|
# initial R2T of "FirstBurstLength" at offset 0), uncomment the following line:
|
||||||
|
#
|
||||||
|
# The defaults is No.
|
||||||
|
node.session.iscsi.InitialR2T = No
|
||||||
|
|
||||||
|
#
|
||||||
|
# To disable immediate data (i.e., the initiator does not send
|
||||||
|
# unsolicited data with the iSCSI command PDU), uncomment the following line:
|
||||||
|
#
|
||||||
|
#node.session.iscsi.ImmediateData = No
|
||||||
|
#
|
||||||
|
# To enable immediate data (i.e., the initiator sends unsolicited data
|
||||||
|
# with the iSCSI command packet), uncomment the following line:
|
||||||
|
#
|
||||||
|
# The default is Yes
|
||||||
|
node.session.iscsi.ImmediateData = Yes
|
||||||
|
|
||||||
|
# To specify the maximum number of unsolicited data bytes the initiator
|
||||||
|
# can send in an iSCSI PDU to a target, edit the following line.
|
||||||
|
#
|
||||||
|
# The value is the number of bytes in the range of 512 to (2^24-1) and
|
||||||
|
# the default is 262144
|
||||||
|
node.session.iscsi.FirstBurstLength = 262144
|
||||||
|
|
||||||
|
# To specify the maximum SCSI payload that the initiator will negotiate
|
||||||
|
# with the target for, edit the following line.
|
||||||
|
#
|
||||||
|
# The value is the number of bytes in the range of 512 to (2^24-1) and
|
||||||
|
# the defauls it 16776192
|
||||||
|
node.session.iscsi.MaxBurstLength = 16776192
|
||||||
|
|
||||||
|
# To specify the maximum number of data bytes the initiator can receive
|
||||||
|
# in an iSCSI PDU from a target, edit the following line.
|
||||||
|
#
|
||||||
|
# The value is the number of bytes in the range of 512 to (2^24-1) and
|
||||||
|
# the default is 262144
|
||||||
|
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
|
||||||
|
|
||||||
|
# To specify the maximum number of data bytes the initiator will send
|
||||||
|
# in an iSCSI PDU to the target, edit the following line.
|
||||||
|
#
|
||||||
|
# The value is the number of bytes in the range of 512 to (2^24-1).
|
||||||
|
# Zero is a special case. If set to zero, the initiator will use
|
||||||
|
# the target's MaxRecvDataSegmentLength for the MaxXmitDataSegmentLength.
|
||||||
|
# The default is 0.
|
||||||
|
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
|
||||||
|
|
||||||
|
# To specify the maximum number of data bytes the initiator can receive
|
||||||
|
# in an iSCSI PDU from a target during a discovery session, edit the
|
||||||
|
# following line.
|
||||||
|
#
|
||||||
|
# The value is the number of bytes in the range of 512 to (2^24-1) and
|
||||||
|
# the default is 32768
|
||||||
|
#
|
||||||
|
discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
|
||||||
|
|
||||||
|
# To allow the targets to control the setting of the digest checking,
|
||||||
|
# with the initiator requesting a preference of enabling the checking, uncomment# one or both of the following lines:
|
||||||
|
#node.conn[0].iscsi.HeaderDigest = CRC32C,None
|
||||||
|
#node.conn[0].iscsi.DataDigest = CRC32C,None
|
||||||
|
#
|
||||||
|
# To allow the targets to control the setting of the digest checking,
|
||||||
|
# with the initiator requesting a preference of disabling the checking,
|
||||||
|
# uncomment one or both of the following lines:
|
||||||
|
#node.conn[0].iscsi.HeaderDigest = None,CRC32C
|
||||||
|
#node.conn[0].iscsi.DataDigest = None,CRC32C
|
||||||
|
#
|
||||||
|
# To enable CRC32C digest checking for the header and/or data part of
|
||||||
|
# iSCSI PDUs, uncomment one or both of the following lines:
|
||||||
|
#node.conn[0].iscsi.HeaderDigest = CRC32C
|
||||||
|
#node.conn[0].iscsi.DataDigest = CRC32C
|
||||||
|
#
|
||||||
|
# To disable digest checking for the header and/or data part of
|
||||||
|
# iSCSI PDUs, uncomment one or both of the following lines:
|
||||||
|
#node.conn[0].iscsi.HeaderDigest = None
|
||||||
|
#node.conn[0].iscsi.DataDigest = None
|
||||||
|
#
|
||||||
|
# The default is to never use DataDigests or HeaderDigests.
|
||||||
|
#
|
||||||
|
|
||||||
|
# For multipath configurations, you may want more than one session to be
|
||||||
|
# created on each iface record. If node.session.nr_sessions is greater
|
||||||
|
# than 1, performing a 'login' for that node will ensure that the
|
||||||
|
# appropriate number of sessions is created.
|
||||||
|
node.session.nr_sessions = 1
|
||||||
|
|
||||||
|
# When iscsid starts up it recovers existing sessions, if possible.
|
||||||
|
# If the target for a session has gone away when this occurs, the
|
||||||
|
# iscsid daemon normally tries to reestablish each session,
|
||||||
|
# in succession, in the background, by trying again every two
|
||||||
|
# seconds, until all sessions are restored. This configuration
|
||||||
|
# variable can limits the number of retries for each session.
|
||||||
|
# For example, setting reopen_max=150 would mean that each session
|
||||||
|
# recovery was limited to about five minutes.
|
||||||
|
#
|
||||||
|
node.session.reopen_max = 0
|
||||||
|
|
||||||
|
#************
|
||||||
|
# Workarounds
|
||||||
|
#************
|
||||||
|
|
||||||
|
# Some targets like IET prefer after an initiator has sent a task
|
||||||
|
# management function like an ABORT TASK or LOGICAL UNIT RESET, that
|
||||||
|
# it does not respond to PDUs like R2Ts. To enable this behavior uncomment
|
||||||
|
# the following line (The default behavior is Yes):
|
||||||
|
node.session.iscsi.FastAbort = Yes
|
||||||
|
|
||||||
|
# Some targets like Equalogic prefer that after an initiator has sent
|
||||||
|
# a task management function like an ABORT TASK or LOGICAL UNIT RESET, that
|
||||||
|
# it continue to respond to R2Ts. To enable this uncomment this line
|
||||||
|
# node.session.iscsi.FastAbort = No
|
||||||
|
|
||||||
|
# To prevent doing automatic scans that would add unwanted luns to the system
|
||||||
|
# we can disable them and have sessions only do manually requested scans.
|
||||||
|
# Automatic scans are performed on startup, on login, and on AEN/AER reception
|
||||||
|
# on devices supporting it. For HW drivers all sessions will use the value
|
||||||
|
# defined in the configuration file. This configuration option is independent
|
||||||
|
# of scsi_mod scan parameter. (The default behavior is auto):
|
||||||
|
node.session.scan = auto
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
--- a/usr/iscsiadm.c 2016-09-29 20:33:24.000000000 +0200
|
||||||
|
+++ b/usr/iscsiadm.c 2017-01-08 03:03:20.648496369 +0100
|
||||||
|
@@ -3263,7 +3263,8 @@
|
||||||
|
int packet_size=32, ping_count=1, ping_interval=0;
|
||||||
|
int do_discover = 0, sub_mode = -1;
|
||||||
|
int portal_type = -1;
|
||||||
|
int timeout = ISCSID_REQ_TIMEOUT;
|
||||||
|
+ int argerror = 0;
|
||||||
|
struct sigaction sa_old;
|
||||||
|
struct sigaction sa_new;
|
||||||
|
struct list_head ifaces;
|
||||||
|
@@ -3426,6 +3427,11 @@
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
usage(0);
|
||||||
|
+ break;
|
||||||
|
+ case '?':
|
||||||
|
+ log_error("unrecognized character '%c'", optopt);
|
||||||
|
+ argerror = 1;
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name && value) {
|
||||||
|
@@ -3441,8 +3446,7 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (optopt) {
|
||||||
|
- log_error("unrecognized character '%c'", optopt);
|
||||||
|
+ if (argerror) {
|
||||||
|
rc = ISCSI_ERR_INVAL;
|
||||||
|
goto free_ifaces;
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
iscsi-gen-initiatorname &>/dev/null
|
||||||
|
|
||||||
|
cat >&2 <<-EOF
|
||||||
|
*
|
||||||
|
* A default initiator name has been generated in
|
||||||
|
* /etc/iscsi/initiatorname.iscsi
|
||||||
|
*
|
||||||
|
EOF
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/libopeniscsiusr/Makefile b/libopeniscsiusr/Makefile
|
||||||
|
index 6757527..7715344 100644
|
||||||
|
--- a/libopeniscsiusr/Makefile
|
||||||
|
+++ b/libopeniscsiusr/Makefile
|
||||||
|
@@ -44,7 +44,7 @@ EXTRA_MAN_FILES = libopeniscsiusr.h.3
|
||||||
|
OBJS = context.o misc.o session.o sysfs.o iface.o idbm.o node.o default.o
|
||||||
|
|
||||||
|
CFLAGS ?= -O2 -g
|
||||||
|
-CFLAGS += -Wall -Werror -Wextra -fvisibility=hidden -fPIC
|
||||||
|
+CFLAGS += -Wall -Wextra -fvisibility=hidden -fPIC
|
||||||
|
CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
|
||||||
|
|
||||||
|
LDFLAGS += $(shell $(PKG_CONFIG) --libs libkmod)
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# Forked from Alpine for providing a version with systemd
|
||||||
|
maintainer="Robert Eckelmann <longnoserob@postmarketos.org>"
|
||||||
|
pkgname=open-isns
|
||||||
|
_pkgver=0.102
|
||||||
|
pkgver=9999$_pkgver
|
||||||
|
pkgrel=2
|
||||||
|
pkgdesc="iSNS server and client for Linux"
|
||||||
|
url="https://github.com/open-iscsi/open-isns"
|
||||||
|
arch="all"
|
||||||
|
license="LGPL-2.1-or-later"
|
||||||
|
makedepends="meson openssl-dev>3 musl-dev"
|
||||||
|
options="!check"
|
||||||
|
subpackages="$pkgname-dev $pkgname-doc $pkgname-lib $pkgname-systemd"
|
||||||
|
source="$pkgname-$_pkgver.tar.gz::https://github.com/open-iscsi/open-isns/archive/v$_pkgver.tar.gz
|
||||||
|
"
|
||||||
|
builddir="$srcdir/open-isns-$_pkgver"
|
||||||
|
|
||||||
|
|
||||||
|
build() {
|
||||||
|
abuild-meson \
|
||||||
|
-Dsecurity=enabled \
|
||||||
|
. output
|
||||||
|
meson compile -C output
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
DESTDIR="$pkgdir" meson install --no-rebuild -C output
|
||||||
|
|
||||||
|
mkdir -p "$pkgdir"/usr/lib/systemd/system
|
||||||
|
}
|
||||||
|
|
||||||
|
lib() {
|
||||||
|
amove usr/lib/lib*.so.*
|
||||||
|
}
|
||||||
|
|
||||||
|
sha512sums="
|
||||||
|
f5ae8af89b85565181c2f6def9834d9dab0a15d5d9b28721cce116c5580173ed9adba219e1ede48988cb57f047578db4ece458c4a7db598412c7583e56393d2b open-isns-0.102.tar.gz
|
||||||
|
"
|
||||||
Reference in New Issue
Block a user