Hello community,

here is the log from the commit of package open-iscsi for openSUSE:Factory 
checked in at 2013-03-17 10:07:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/open-iscsi (Old)
 and      /work/SRC/openSUSE:Factory/.open-iscsi.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "open-iscsi", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/open-iscsi/open-iscsi.changes    2011-10-27 
14:29:16.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.open-iscsi.new/open-iscsi.changes       
2013-03-17 10:07:28.000000000 +0100
@@ -1,0 +2,8 @@
+Fri Jan 11 14:25:51 PST 2013 - [email protected]
+
+- Add open-iscsi-support-non-root-boot-volume.patch: handle non-
+  root boot-time iscsi volumes (bnc#630434)
+- Add open-iscsi-fix-sysfs-get-value-null.patch: accept "(null)"
+  password as meaning no password, when using sysfs (bnc#766300)
+
+-------------------------------------------------------------------

New:
----
  open-iscsi-fix-sysfs-get-value-null.patch
  open-iscsi-support-non-root-boot-volume.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ open-iscsi.spec ++++++
--- /var/tmp/diff_new_pack.eeJQAB/_old  2013-03-17 10:07:30.000000000 +0100
+++ /var/tmp/diff_new_pack.eeJQAB/_new  2013-03-17 10:07:30.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package open-iscsi
 #
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -15,22 +15,21 @@
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
-# norootforbuild
-
 
 Name:           open-iscsi
-BuildRequires:  bison db-devel flex
+BuildRequires:  bison
+BuildRequires:  db-devel
+BuildRequires:  flex
 Url:            http://www.open-iscsi.org
-License:        GPL-2.0+
-Group:          Productivity/Networking/Other
 PreReq:         %fillup_prereq %insserv_prereq
-AutoReqProv:    on
 Version:        2.0.870
-Release:        39
+Release:        0
 Provides:       linux-iscsi
 Obsoletes:      linux-iscsi
 %define iscsi_release 865
 Summary:        Linux* Open-iSCSI Software Initiator
+License:        GPL-2.0+
+Group:          Productivity/Networking/Other
 Source:         %{name}-2.0-870-rc1.tar.bz2
 Source11:       iscsi-gen-initiatorname.sh
 Patch1:         %{name}-start-target-before-initiator
@@ -63,6 +62,8 @@
 Patch28:        %{name}-remove-trailing-tilde
 Patch29:        open-iscsi-2.0-870-rc1-static.patch
 Patch30:        %{name}-header.patch
+Patch31:        %{name}-fix-sysfs-get-value-null.patch
+Patch32:        %{name}-support-non-root-boot-volume.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -122,6 +123,8 @@
 %patch28 -p1
 %patch29
 %patch30 -p1
+%patch31 -p1
+%patch32 -p1
 
 %build
 %{__make} OPTFLAGS="${RPM_OPT_FLAGS} -fno-strict-aliasing 
-DLOCK_DIR=\\\"/etc/iscsi\\\""

++++++ open-iscsi-fix-sysfs-get-value-null.patch ++++++
Handle nulls from sysfs, for recent kernels.

Sysfs in recent kernels returns "(null)" instead of "<NULL>",
handle that. Such "(null)" strings from sysfs as mapped to
NULL values.

Lack of this check, caused a non-existant password to be read as
"(null)" and treated as a valid and present password, and so,
AuthMethod=CHAP was used for a relogin.

References: bnc #683249,656119, bnc#766300
---
 usr/iscsi_sysfs.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: b/usr/iscsi_sysfs.c
===================================================================
--- a/usr/iscsi_sysfs.c
+++ b/usr/iscsi_sysfs.c
@@ -43,7 +43,6 @@
 #define ISCSI_SESSION_DIR      "/sys/class/iscsi_session"
 #define ISCSI_HOST_DIR         "/sys/class/iscsi_host"
 
-#define ISCSI_SYSFS_INVALID_VALUE      "<NULL>"
 #define ISCSI_SESSION_SUBSYS           "iscsi_session"
 #define ISCSI_CONN_SUBSYS              "iscsi_connection"
 #define ISCSI_HOST_SUBSYS              "iscsi_host"
@@ -87,7 +86,8 @@ static int iscsi_sysfs_get_param(char *i
                return EIO;
        }
 
-       if (!strncmp(sysfs_value, ISCSI_SYSFS_INVALID_VALUE, 6))
+       if (!strncmp(sysfs_value, "<NULL>", 6) ||
+               !strncmp(sysfs_value, "(null)", 6))
                return ENODATA;
 
        sscanf(sysfs_value, format, ret_value);
++++++ open-iscsi-support-non-root-boot-volume.patch ++++++
From: Lee Duncan <[email protected]>
Subject: [PATCH] support non-root boot-time volumes

Support SUSE non-root boot-time volumes.

--- 
diff -Narup open-iscsi-2.0-870-rc1.orig/etc/initd/boot.suse 
open-iscsi-2.0-870-rc1/etc/initd/boot.suse
--- open-iscsi-2.0-870-rc1.orig/etc/initd/boot.suse     2013-01-08 
15:11:27.694140109 -0800
+++ open-iscsi-2.0-870-rc1/etc/initd/boot.suse  2013-01-08 15:53:57.486120236 
-0800
@@ -31,13 +31,17 @@ ARGS="-c $CONFIG_FILE"
 #
 iscsi_mark_root_nodes()
 {
+    echo -n "Marking iSCSI targets needed at boot time: "
+    rc_failed 5
     $ISCSIADM -m session 2> /dev/null | while read t num i target ; do
        ip=${i%%:*}
        STARTUP=`$ISCSIADM -m node -p $ip -T $target 2> /dev/null | grep 
"node.conn\[0\].startup" | cut -d' ' -f3`
        if [ "$STARTUP" -a "$STARTUP" != "onboot" ] ; then
            $ISCSIADM -m node -p $ip -T $target -o update -n 
node.conn[0].startup -v onboot
+           rc_failed 0
        fi
     done
+    rc_status -v
 }
 
 # Reset status of this service
@@ -51,9 +55,11 @@ fi
 
 case "$1" in
     start)
-       echo -n "Starting iSCSI initiator for the root device: "
-       startproc $DAEMON $ARGS
-       rc_status -v
+       if ! checkproc $DAEMON ; then
+           echo -n "Starting iSCSI initiator for the root device: "
+           startproc $DAEMON $ARGS
+           rc_status -v
+       fi
        iscsi_mark_root_nodes
        ;;
     stop|restart|reload)
diff -Narup open-iscsi-2.0-870-rc1.orig/etc/initd/initd.suse 
open-iscsi-2.0-870-rc1/etc/initd/initd.suse
--- open-iscsi-2.0-870-rc1.orig/etc/initd/initd.suse    2013-01-08 
15:11:27.694140109 -0800
+++ open-iscsi-2.0-870-rc1/etc/initd/initd.suse 2013-01-09 14:56:25.263995190 
-0800
@@ -60,7 +60,7 @@ iscsi_umount_all_luns()
 {
     local d m dev p s
 
-    cat /proc/mounts | sed -ne '/^\/dev\/.*/p' | while read d m t o x; do 
+    sed -ne '/^\/dev\/.*/p' /proc/mounts | while read d m t o x; do 
        if [ "$m" = "/" ] ; then 
            continue;
        fi
@@ -93,6 +93,7 @@ iscsi_list_all_nodes()
 {
     # Check for active sessions
     if $ISCSIADM -m session > /dev/null; then
+       echo "No active connections."
        return 0
     fi
     echo "Active connections:"
diff -Narup open-iscsi-2.0-870-rc1.orig/etc/mkinitrd/mkinitrd-setup.sh 
open-iscsi-2.0-870-rc1/etc/mkinitrd/mkinitrd-setup.sh
--- open-iscsi-2.0-870-rc1.orig/etc/mkinitrd/mkinitrd-setup.sh  2013-01-08 
15:11:27.670139620 -0800
+++ open-iscsi-2.0-870-rc1/etc/mkinitrd/mkinitrd-setup.sh       2013-01-09 
14:36:49.394294388 -0800
@@ -2,69 +2,138 @@
 #
 #%stage: device
 #
-check_iscsi_root() {
-    local devname=$1
-    local sysfs_path
-
-    sysfs_path=$(/sbin/udevadm info -q path -n $devname 2> /dev/null)
-    if [ -z "$sysfs_path" ] || [ ! -d /sys$sysfs_path ] ; then
-       return;
+function verify_path()
+{
+    local devname="$1" path="$2"
+
+    if [[ ! -d "${path}" ]] ; then
+       if [[ "${path}" =~ .+\ .+ ]] ; then
+           error 2 "iSCSI device ${devname} is connected to more than one 
iSCSI target!"
+           # not reached
+       else
+           # does not seem to be an iSCSI attached device
+           return 1
+           
+       fi
     fi
+    return 0
+}
 
-    pushd /sys$sysfs_path > /dev/null
-    if [ ! -d device ] ; then
-       cd ..
+function check_iscsi()
+{
+    local devname="$1" retval=1
+    local sysfs_path=$(/sbin/udevadm info -q path -n "${devname}" 2>/dev/null)
+    local ip target startup
+
+    # do we have a valid device?
+    [[ -z "${sysfs_path}" ]] && sysfs_path="/block${devname##/dev}"
+    sysfs_path="/sys${sysfs_path}"
+    [[ ! -d "${sysfs_path}" ]] && return 1              # no, return false
+
+    # Do we have a valid device link?
+    [[ ! -d "${sysfs_path}/device" ]] && sysfs_path="${sysfs_path%/*}"
+    [[ ! -d "${sysfs_path}/device" ]] && return 1      # no, return false
+
+    # Is device an iSCSI device?
+    sysfs_path="${sysfs_path}/device/../.."
+
+    ip="$(echo ${sysfs_path}/connection*)"
+    verify_path "${devname}" "${ip}" || return 1       # no, return false
+
+    ip="${ip}/iscsi_connection/${ip##*/}/persistent_"
+    [[ ! -r "${ip}address" || ! -r "${ip}port" ]] &&
+       error 2 "iSCSI device ${devname} connected to iSCSI target without any 
persistent_{address,port}!"
+    ip="$(cat "${ip}address"):$(cat "${ip}port")"
+
+    target=$(echo ${sysfs_path}/iscsi_session/*)
+    verify_path "${devname}" "${target}" || return 1   # no, return false
+
+    target="${target}/targetname"
+    [[ ! -r "${target}" ]] &&
+       error 2 "iSCSI device ${devname} connected to iSCSI target without any 
targetname!"
+    target="$(cat ${target})"
+
+    # figure out whether it has been correctly configured
+    [[ ! -x "${_iadm_}" ]] &&
+       error 2 "iSCSI device ${devname} connected to iSCSI target, but no 
${_iadm_} command available!"
+
+    startup="$(
+       ${_iadm_} -m node -p "${ip}" -T "${target}" 2>/dev/null | grep 
'node.conn\[0\].startup'
+    )"
+    startup="${startup##* }"
+    startup="${startup%% *}"
+    if [[ "${startup}" != "onboot" ]] ; then
+       [[ -z "${startup}" ]] && return 1       # Oops, no parameter - not an 
iSCSI, return false
+
+       ## Either:
+       #echo >&2 "WARNING: iSCSI device ${devname} is using 
'node.conn[0].startup = ${startup}',"
+       #echo >&2 "WARNING: setting it to 'onboot' instead."
+       #${_iadm_} -m node -p "${ip}" -T "${target}" -o update -n 
'node.conn[0].startup' -v onboot
+
+       ## or:
+       echo >&2 "WARNING: iSCSI device ${devname} is using 
'node.conn[0].startup = ${startup}'!"
+       echo >&2 "WARNING: System not bootable with this setting, need to be 
set to 'onboot' instead, using:"
+       echo >&2 "
+       ${_iadm_} -m node -p '${ip}' -T '${target}' -o update -n 
'node.conn[0].startup' -v onboot"
     fi
 
-    if [ ! -d device ] ; then
-       # no device link; return
-       popd > /dev/null
-       return;
-    fi
+    # attached to an iSCSI device
+    return 0
+}
 
-    cd -P device
-    cd ../..
 
-    if [ -d connection* ]; then
-       cd -P connection*
-       cid=${PWD#*connection}
-       sid=${cid%%:*}
-       if [ -d /sys/class/iscsi_session/session$sid ]; then
-           cd -P /sys/class/iscsi_session/session$sid
-           echo $(basename $PWD)
-       fi
-    fi
-    popd > /dev/null
-}
 
-for bd in $blockdev; do
+_iadm_="/sbin/iscsiadm"
+
+# Are system device(s) attached to iSCSI devices?
+# In case they are, ensure:
+# (1) the iSCSI gets included in "initrd", and
+# (2) the iSCSI sessions have been configured with
+#     "node.conn[0].startup = onboot".
+for bd in $blockdev ; do
     update_blockdev $bd
-    sid=$(check_iscsi_root $bd)
-    if [ "$sid" ]; then
-       root_iscsi=1
-       iscsi_sessions="$iscsi_sessions ${sid#session}"
-    fi
+    check_iscsi $bd && root_iscsi=1
 done
 
+# Are any of the defined file partitions to be mounted at system boot
+# attached to iSCSI devices? In case they are, ensure:
+# (1) the iSCSI gets included in "initrd", and
+# (2) the iSCSI sessions have been configured with
+#     "node.conn[0].startup = onboot".
+for bd in $(awk '/^[[:space:]]*(\/dev\/|(LABEL|UUID)=)/ { print $1 }' 
/etc/fstab)
+do
+    bd="${bd/LABEL=//dev/disk/by-label/}"
+    bd="${bd/UUID=//dev/disk/by-uuid/}"
+    update_blockdev $bd
+    check_iscsi $bd && root_iscsi=1
+done
+
+# Include the iSCSI stack, when at least one active iSCSI session has
+# been configured with "node.conn[0].startup = onboot", even if it was
+# not used for a system device or mounted partition.
+if [[ -x "${_iadm_}" ]] ; then
+    for node in $(${_iadm_} -m node 2>/dev/null | sed -e 's/ /,/g') ; do
+       [[ "$(
+               ${_iadm_} -m node -T "${node##*,}" -p "${node%%,*}" 2>/dev/null 
|
+               grep "node.conn\[0\].startup"
+           )" =~ [[:space:]]*=[[:space:]]*onboot ]] && root_iscsi=1
+    done
+fi
+
+unset _iadm_
+
 save_var root_iscsi
-save_var iscsi_sessions
 
 if [ "${root_iscsi}" ]; then
-    for session in $iscsi_sessions; do
-       eval TargetName${session}=$(cat 
/sys/class/iscsi_session/session${session}/targetname)
-       eval TargetAddress${session}=$(cat 
/sys/class/iscsi_connection/connection${session}:0/address)
-       eval TargetPort${session}=$(cat 
/sys/class/iscsi_connection/connection${session}:0/port)
-       
-       save_var TargetName${session}
-       save_var TargetAddress${session}
-       save_var TargetPort${session}
-    done
     # copy the iscsi configuration
     cp -rp /etc/iscsi etc/
+
     if [ -z "$interface" ] ; then
-       interface="default"
+       interface="default"                             # needed?
     fi
+
+    # In case target port was not defined via command line, assign default port
+    save_var TargetPort 3260
 fi
 
-save_var TargetPort 3260 # in case the port was not defined via command line 
we assign a default port
 
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to