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:
Robert Eckelmann 2026-07-01 22:15:22 +09:00 committed by The Friendly Meow (merge) Bot
parent a74048b1e2
commit 5b9f67f79e
No known key found for this signature in database
9 changed files with 746 additions and 0 deletions

View file

@ -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

View file

@ -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
"

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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;
}

View file

@ -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

View file

@ -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)

View file

@ -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
"