This commit is contained in:
parent
e03df61366
commit
422bfe39c4
@ -1,88 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# /etc/init.d/iscsi
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: iscsiboot
|
||||
# Required-Start: boot.proc
|
||||
# Should-Start:
|
||||
# Required-Stop:
|
||||
# Should-Stop:
|
||||
# Default-Start: B
|
||||
# Default-Stop:
|
||||
# Short-Description: Starts the iSCSI initiator daemon
|
||||
# Description: iSCSI initiator daemon for root filesystem
|
||||
# The iSCSI protocol allows for access of a disk via
|
||||
# the network. This script starts the initiator daemon
|
||||
# which is required if the root filesystem resides on
|
||||
# an iSCSI disk.
|
||||
### END INIT INFO
|
||||
|
||||
ISCSIADM=/sbin/iscsiadm
|
||||
PID_FILE=/var/run/iscsi.pid
|
||||
CONFIG_FILE=/etc/iscsid.conf
|
||||
DAEMON=/sbin/iscsid
|
||||
ARGS="-c $CONFIG_FILE -p $PID_FILE"
|
||||
|
||||
# Source LSB init functions
|
||||
. /etc/rc.status
|
||||
|
||||
#
|
||||
# This service is run right after booting. So all activated targets
|
||||
# must be enabled during mkinitrd run and thus should not be removed
|
||||
# when the open-iscsi service is stopped.
|
||||
#
|
||||
iscsi_mark_root_nodes()
|
||||
{
|
||||
TARGETS=$($ISCSIADM -m session 2> /dev/null | sed 's@.*\[[^:]*:\(.*\)\] .*@\1@g')
|
||||
for rec in $TARGETS; do
|
||||
STARTUP=`$ISCSIADM -m node -r $rec | grep "node.conn\[0\].startup" | cut -d' ' -f3`
|
||||
if [ "$STARTUP" != "onboot" ] ; then
|
||||
$ISCSIADM -m node -r $rec -o update -n node.conn[0].startup -v onboot
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Reset status of this service
|
||||
rc_reset
|
||||
|
||||
# We only need to start this for root on iSCSI
|
||||
if ! grep -q iscsi_tcp /proc/modules ; then
|
||||
rc_failed 6
|
||||
rc_exit
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
[ ! -d /var/lib/open-iscsi ] && mkdir -p /var/lib/open-iscsi
|
||||
echo -n "Starting iSCSI initiator for the root device: "
|
||||
startproc $DAEMON $ARGS
|
||||
rc_status -v
|
||||
iscsi_mark_root_nodes
|
||||
;;
|
||||
stop)
|
||||
rc_failed 0
|
||||
;;
|
||||
status)
|
||||
echo -n "Checking for iSCSI initiator service: "
|
||||
if checkproc $DAEMON ; then
|
||||
rc_status -v
|
||||
else
|
||||
rc_failed 3
|
||||
rc_status -v
|
||||
fi
|
||||
;;
|
||||
restart)
|
||||
$0 stop
|
||||
sleep 1
|
||||
$0 start
|
||||
;;
|
||||
reload)
|
||||
rc_failed 0
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|status|restart}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
rc_exit
|
||||
|
4684
open-iscsi-add-discovery-ops
Normal file
4684
open-iscsi-add-discovery-ops
Normal file
File diff suppressed because it is too large
Load Diff
112
open-iscsi-add-suse-boot-script
Normal file
112
open-iscsi-add-suse-boot-script
Normal file
@ -0,0 +1,112 @@
|
||||
commit a9552e7d8651ecdaefc39ea7913ba2a382a025fe
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Mon Mar 10 10:16:46 2008 +0100
|
||||
|
||||
Add SUSE boot script
|
||||
|
||||
For root on iSCSI SUSE requires a separate boot script to start
|
||||
up iscsid as soon as possible.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 046c0f9..8eb812c 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -79,6 +79,8 @@ install_initd_suse:
|
||||
$(INSTALL) -d $(DESTDIR)$(initddir)
|
||||
$(INSTALL) -m 755 etc/initd/initd.suse \
|
||||
$(DESTDIR)$(initddir)/open-iscsi
|
||||
+ $(INSTALL) -m 755 etc/initd/boot.suse \
|
||||
+ $(DESTDIR)$(initddir)/boot.open-iscsi
|
||||
|
||||
install_initd_redhat:
|
||||
$(INSTALL) -d $(DESTDIR)$(initddir)
|
||||
diff --git a/etc/initd/boot.suse b/etc/initd/boot.suse
|
||||
new file mode 100644
|
||||
index 0000000..df64e21
|
||||
--- /dev/null
|
||||
+++ b/etc/initd/boot.suse
|
||||
@@ -0,0 +1,82 @@
|
||||
+#!/bin/bash
|
||||
+#
|
||||
+# /etc/init.d/iscsi
|
||||
+#
|
||||
+### BEGIN INIT INFO
|
||||
+# Provides: iscsiboot
|
||||
+# Required-Start: boot.proc
|
||||
+# Should-Start:
|
||||
+# Required-Stop:
|
||||
+# Should-Stop:
|
||||
+# Default-Start: B
|
||||
+# Default-Stop:
|
||||
+# Short-Description: Starts the iSCSI initiator daemon
|
||||
+#
|
||||
+### END INIT INFO
|
||||
+
|
||||
+ISCSIADM=/sbin/iscsiadm
|
||||
+PID_FILE=/var/run/iscsi.pid
|
||||
+CONFIG_FILE=/etc/iscsid.conf
|
||||
+DAEMON=/sbin/iscsid
|
||||
+ARGS="-c $CONFIG_FILE -p $PID_FILE"
|
||||
+
|
||||
+# Source LSB init functions
|
||||
+. /etc/rc.status
|
||||
+
|
||||
+#
|
||||
+# This service is run right after booting. So all activated targets
|
||||
+# must be enabled during mkinitrd run and thus should not be removed
|
||||
+# when the open-iscsi service is stopped.
|
||||
+#
|
||||
+iscsi_mark_root_nodes()
|
||||
+{
|
||||
+ $ISCSIADM -m session 2> /dev/null | while read t num i target ; do
|
||||
+ ip=${i%%:*}
|
||||
+ STARTUP=`$ISCSIADM -m node -p $ip -T $target | grep "node.conn\[0\].startup" | cut -d' ' -f3`
|
||||
+ if [ "$STARTUP" != "onboot" ] ; then
|
||||
+ $ISCSIADM -m node -p $ip -T $target -o update -n node.conn[0].startup -v onboot
|
||||
+ fi
|
||||
+ done
|
||||
+}
|
||||
+
|
||||
+# Reset status of this service
|
||||
+rc_reset
|
||||
+
|
||||
+# We only need to start this for root on iSCSI
|
||||
+if ! grep -q iscsi_tcp /proc/modules ; then
|
||||
+ rc_failed 6
|
||||
+ rc_exit
|
||||
+fi
|
||||
+
|
||||
+case "$1" in
|
||||
+ start)
|
||||
+ [ ! -d /var/lib/open-iscsi ] && mkdir -p /var/lib/open-iscsi
|
||||
+ echo -n "Starting iSCSI initiator for the root device: "
|
||||
+ startproc $DAEMON $ARGS
|
||||
+ rc_status -v
|
||||
+ iscsi_mark_root_nodes
|
||||
+ ;;
|
||||
+ stop)
|
||||
+ rc_failed 0
|
||||
+ ;;
|
||||
+ status)
|
||||
+ echo -n "Checking for iSCSI initiator service: "
|
||||
+ if checkproc $DAEMON ; then
|
||||
+ rc_status -v
|
||||
+ else
|
||||
+ rc_failed 3
|
||||
+ rc_status -v
|
||||
+ fi
|
||||
+ ;;
|
||||
+ restart)
|
||||
+ $0 stop
|
||||
+ sleep 1
|
||||
+ $0 start
|
||||
+ ;;
|
||||
+ *)
|
||||
+ echo "Usage: $0 {start|stop|status|restart}"
|
||||
+ exit 1
|
||||
+ ;;
|
||||
+esac
|
||||
+rc_exit
|
||||
+
|
317
open-iscsi-backport-fwparam_ibft
Normal file
317
open-iscsi-backport-fwparam_ibft
Normal file
@ -0,0 +1,317 @@
|
||||
commit 318863586af9278c82bd8543b8891002ce76d485
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Mon Mar 10 11:21:49 2008 +0100
|
||||
|
||||
Add compability program fwparam_ibft
|
||||
|
||||
We still need the fwparam_ibft program as the fw discovery won't
|
||||
give us details about the network settings.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/usr/Makefile b/usr/Makefile
|
||||
index 0e54cf6..42a8788 100644
|
||||
--- a/usr/Makefile
|
||||
+++ b/usr/Makefile
|
||||
@@ -42,19 +42,19 @@ COMMON_SRCS = $(ISCSI_LIB_SRCS)
|
||||
# core initiator files
|
||||
INITIATOR_SRCS = initiator.o scsi.o actor.o mgmt_ipc.o isns.o transport.o
|
||||
# fw boot files
|
||||
-FW_BOOT_SRCS = $(wildcard ../utils/fwparam_ibft/*.o)
|
||||
+FWPARAM_LIB = ../utils/fwparam_ibft/libfwparam.a
|
||||
|
||||
all: $(PROGRAMS)
|
||||
|
||||
iscsid: $(COMMON_SRCS) $(IPC_OBJ) $(INITIATOR_SRCS) iscsid.o
|
||||
$(CC) $(CFLAGS) $^ -o $@
|
||||
|
||||
-iscsiadm: $(COMMON_SRCS) $(FW_BOOT_SRCS) strings.o discovery.o iscsiadm.o
|
||||
- $(CC) $(CFLAGS) $^ -o $@
|
||||
+iscsiadm: $(COMMON_SRCS) strings.o discovery.o iscsiadm.o
|
||||
+ $(CC) $(CFLAGS) $^ -o $@ $(FWPARAM_LIB)
|
||||
|
||||
-iscsistart: $(IPC_OBJ) $(ISCSI_LIB_SRCS) $(INITIATOR_SRCS) $(FW_BOOT_SRCS) \
|
||||
+iscsistart: $(COMMON_SRCS) $(IPC_OBJ) $(INITIATOR_SRCS) \
|
||||
iscsistart.o statics.o
|
||||
- $(CC) $(CFLAGS) -static $^ -o $@
|
||||
+ $(CC) $(CFLAGS) -static $^ -o $@ $(FWPARAM_LIB)
|
||||
|
||||
clean:
|
||||
rm -f *.o $(PROGRAMS) .depend
|
||||
diff --git a/utils/fwparam_ibft/Makefile b/utils/fwparam_ibft/Makefile
|
||||
index 6d7d00a..1414f06 100644
|
||||
--- a/utils/fwparam_ibft/Makefile
|
||||
+++ b/utils/fwparam_ibft/Makefile
|
||||
@@ -21,6 +21,9 @@
|
||||
# "Prasanna Mumbai" <mumbai.prasanna@gmail.com>
|
||||
#
|
||||
|
||||
+PROG = fwparam_ibft
|
||||
+MAIN = fwparam_main.o
|
||||
+LIB = libfwparam.a
|
||||
OBJS := fwparam_ibft.o fw_entry.o
|
||||
OBJS += prom_lex.o prom_parse.tab.o fwparam_ppc.o
|
||||
CLEANFILES = $(OBJS) $(GENFILES) *.output *~
|
||||
@@ -39,7 +42,10 @@ OPTFLAGS ?= -O2 -g -fPIC
|
||||
WARNFLAGS ?= -Wall -Wstrict-prototypes
|
||||
CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -I../../include
|
||||
|
||||
-all: $(OBJS)
|
||||
+all: $(LIB) $(PROG)
|
||||
+
|
||||
+$(LIB): $(OBJS)
|
||||
+ $(AR) rcv $(LIB) $(OBJS)
|
||||
|
||||
clean:
|
||||
rm -f *.o $(CLEANFILES) .depend
|
||||
@@ -54,6 +60,9 @@ $(GENFILES): Makefile
|
||||
|
||||
$(OBJS): prom_parse.tab.h prom_parse.h fwparam_ibft.h
|
||||
|
||||
+$(PROG): $(MAIN) $(LIB)
|
||||
+ gcc $(CFLAGS) -o $@ $< libfwparam.a
|
||||
+
|
||||
depend:
|
||||
gcc $(CFLAGS) -M `ls *.c` > .depend
|
||||
|
||||
diff --git a/utils/fwparam_ibft/fwparam_ibft.c b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
index dcc63c3..4397f94 100644
|
||||
--- a/utils/fwparam_ibft/fwparam_ibft.c
|
||||
+++ b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
@@ -319,7 +319,7 @@ dump_ibft(void *ibft_loc, struct boot_context *context)
|
||||
struct ibft_initiator *initiator = NULL;
|
||||
struct ibft_nic *nic0 = NULL, *nic1 = NULL;
|
||||
struct ibft_tgt *tgt0 = NULL, *tgt1 = NULL;
|
||||
- char ipbuf[32];
|
||||
+ char buf[32];
|
||||
|
||||
control = ibft_loc + sizeof(*ibft_hdr);
|
||||
CHECK_HDR(control, control);
|
||||
@@ -359,6 +359,28 @@ dump_ibft(void *ibft_loc, struct boot_context *context)
|
||||
CHECK_HDR(tgt1, target);
|
||||
}
|
||||
|
||||
+ if (!context) {
|
||||
+ snprintf(buf, sizeof(buf), "iSCSI_INITIATOR_");
|
||||
+
|
||||
+ if (initiator && (initiator->hdr.flags &
|
||||
+ INIT_FLAG_FW_SEL_BOOT))
|
||||
+ dump_initiator_prefix(ibft_loc, initiator, buf);
|
||||
+
|
||||
+ if (nic0 && (nic0->hdr.flags & INIT_FLAG_FW_SEL_BOOT))
|
||||
+ dump_nic_prefix(ibft_loc, nic0, buf);
|
||||
+ else if (nic1 && (nic1->hdr.flags & INIT_FLAG_FW_SEL_BOOT))
|
||||
+ dump_nic_prefix(ibft_loc, nic1, buf);
|
||||
+
|
||||
+ snprintf(buf, sizeof(buf), "iSCSI_TARGET_");
|
||||
+
|
||||
+ if (tgt0 && (tgt0->hdr.flags & INIT_FLAG_FW_SEL_BOOT))
|
||||
+ dump_tgt_prefix(ibft_loc, tgt0, buf);
|
||||
+ else if (tgt1 && (tgt1->hdr.flags & INIT_FLAG_FW_SEL_BOOT))
|
||||
+ dump_tgt_prefix(ibft_loc, tgt1, buf);
|
||||
+
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
strncpy(context->initiatorname,
|
||||
(char *)ibft_loc+initiator->initiator_name_off,
|
||||
initiator->initiator_name_len + 1);
|
||||
@@ -367,10 +389,10 @@ dump_ibft(void *ibft_loc, struct boot_context *context)
|
||||
strncpy((char *)context->targetname,
|
||||
(char *)(ibft_loc+tgt0->tgt_name_off),
|
||||
tgt0->tgt_name_len);
|
||||
- format_ipaddr(ipbuf, sizeof(ipbuf),
|
||||
+ format_ipaddr(buf, sizeof(buf),
|
||||
tgt0->ip_addr);
|
||||
- strncpy((char *)context->target_ipaddr, ipbuf,
|
||||
- sizeof(ipbuf));
|
||||
+ strncpy((char *)context->target_ipaddr, buf,
|
||||
+ sizeof(buf));
|
||||
context->target_port = tgt0->port;
|
||||
strncpy(context->chap_name,
|
||||
(char *)(ibft_loc + tgt0->chap_name_off),
|
||||
@@ -389,10 +411,10 @@ dump_ibft(void *ibft_loc, struct boot_context *context)
|
||||
strncpy((char *)context->targetname,
|
||||
(char *)(ibft_loc+tgt1->tgt_name_off),
|
||||
tgt1->tgt_name_len);
|
||||
- format_ipaddr(ipbuf, sizeof(ipbuf),
|
||||
+ format_ipaddr(buf, sizeof(buf),
|
||||
tgt1->ip_addr);
|
||||
- strncpy((char *)context->target_ipaddr,ipbuf,
|
||||
- sizeof(ipbuf));
|
||||
+ strncpy((char *)context->target_ipaddr,buf,
|
||||
+ sizeof(buf));
|
||||
context->target_port = tgt1->port;
|
||||
strncpy(context->chap_name,
|
||||
(char *)(ibft_loc + tgt1->chap_name_off),
|
||||
@@ -411,7 +433,7 @@ dump_ibft(void *ibft_loc, struct boot_co
|
||||
return 0;
|
||||
}
|
||||
|
||||
-char *search_ibft(unsigned char *start, int length)
|
||||
+char *search_ibft(unsigned char *start, int start_addr, int length)
|
||||
{
|
||||
unsigned char *cur_ptr, *rom_end;
|
||||
struct ibft_table_hdr *ibft_hdr;
|
||||
@@ -426,35 +448,51 @@ char *search_ibft(unsigned char *start,
|
||||
continue;
|
||||
}
|
||||
memcpy(&rom_size, cur_ptr + 2, 1);
|
||||
- /* Don't search past the end of the ROM BIOS block */
|
||||
- rom_end = cur_ptr + (rom_size * 512) - strlen(iBFTSTR);
|
||||
- while (cur_ptr < rom_end) {
|
||||
- if (!memcmp(cur_ptr, iBFTSTR,strlen(iBFTSTR)))
|
||||
- break;
|
||||
- cur_ptr++;
|
||||
- }
|
||||
|
||||
- if (cur_ptr == rom_end) {
|
||||
- cur_ptr += strlen(iBFTSTR);
|
||||
- continue;
|
||||
- }
|
||||
+ if (debug > 1)
|
||||
+ fprintf(stderr, "Found rom at %x of size %d\n",
|
||||
+ ((int)(cur_ptr - start) + start_addr),
|
||||
+ rom_size * 512);
|
||||
|
||||
- ibft_hdr = (struct ibft_table_hdr *)cur_ptr;
|
||||
- /* Make sure it's correct version. */
|
||||
- if (ibft_hdr->revision != iBFT_REV) {
|
||||
- cur_ptr = rom_end + strlen(iBFTSTR);
|
||||
+ if (rom_size == 0) {
|
||||
+ /* Skip empty rom areas */
|
||||
+ cur_ptr += 512;
|
||||
continue;
|
||||
}
|
||||
|
||||
- /* Make sure that length is valid. */
|
||||
- if ((cur_ptr + ibft_hdr->length) <= (start + length)) {
|
||||
- /* Let verify the checksum */
|
||||
- for (i = 0, check_sum = 0; i < ibft_hdr->length; i++)
|
||||
- check_sum += cur_ptr[i];
|
||||
+ /* Don't search past the end of rom area */
|
||||
+ rom_end = (cur_ptr + (rom_size * 512)) - strlen(iBFTSTR);
|
||||
|
||||
- if (check_sum == 0)
|
||||
- return (char *)cur_ptr;
|
||||
+ while (cur_ptr < rom_end) {
|
||||
+ if (memcmp(cur_ptr, iBFTSTR,strlen(iBFTSTR))) {
|
||||
+ cur_ptr++;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (debug > 1)
|
||||
+ fprintf(stderr, "Found iBFT table at %x\n",
|
||||
+ (int)(cur_ptr - start) + start_addr);
|
||||
+
|
||||
+ ibft_hdr = (struct ibft_table_hdr *)cur_ptr;
|
||||
+
|
||||
+ /* Make sure it's correct version. */
|
||||
+ if (ibft_hdr->revision != iBFT_REV) {
|
||||
+ cur_ptr = rom_end;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ /* Make sure that length is valid. */
|
||||
+ if ((cur_ptr + ibft_hdr->length) <= (start + length)) {
|
||||
+ /* Let verify the checksum */
|
||||
+ for (i = 0, check_sum = 0; i < ibft_hdr->length; i++)
|
||||
+ check_sum += cur_ptr[i];
|
||||
+
|
||||
+ if (check_sum == 0)
|
||||
+ return (char *)cur_ptr;
|
||||
+ }
|
||||
+ cur_ptr = rom_end;
|
||||
}
|
||||
+ cur_ptr += strlen(iBFTSTR);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -505,7 +543,7 @@ fwparam_ibft(struct boot_context *contex
|
||||
goto done;
|
||||
}
|
||||
|
||||
- ibft_loc = search_ibft((unsigned char *)filebuf, end_search);
|
||||
+ ibft_loc = search_ibft((unsigned char *)filebuf, start, end_search);
|
||||
if (ibft_loc)
|
||||
ret = dump_ibft(ibft_loc, context);
|
||||
else {
|
||||
diff --git a/utils/fwparam_ibft/fwparam_main.c b/utils/fwparam_ibft/fwparam_main.c
|
||||
new file mode 100644
|
||||
index 0000000..3a91b52
|
||||
--- /dev/null
|
||||
+++ b/utils/fwparam_ibft/fwparam_main.c
|
||||
@@ -0,0 +1,73 @@
|
||||
+/*
|
||||
+ * 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; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * 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
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
+ * USA.
|
||||
+ *
|
||||
+ * Copyright (C) IBM Corporation, 2006
|
||||
+ *
|
||||
+ * Authors: Patrick Mansfield <patmans@us.ibm.com>
|
||||
+ * Mike Anderson <andmike@us.ibm.com>
|
||||
+ * Hannes Reinecke <hare@suse.de>
|
||||
+ */
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <unistd.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <errno.h>
|
||||
+
|
||||
+#include "fwparam_ibft.h"
|
||||
+#include "fw_context.h"
|
||||
+
|
||||
+extern int debug;
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ int option, ret;
|
||||
+ char *progname, *filebuf = NULL;
|
||||
+
|
||||
+ progname = argv[0];
|
||||
+
|
||||
+ while (1) {
|
||||
+ option = getopt(argc, argv, "f:vhb");
|
||||
+ if (option == -1)
|
||||
+ break;
|
||||
+ switch (option) {
|
||||
+ case 'b':
|
||||
+ /* Ignored for compability */
|
||||
+ break;
|
||||
+ case 'f':
|
||||
+ filebuf = optarg;
|
||||
+ break;
|
||||
+ case 'v':
|
||||
+ debug++;
|
||||
+ break;
|
||||
+ default:
|
||||
+ fprintf(stderr, "Unknown or bad option '%c'\n", option);
|
||||
+ case 'h':
|
||||
+ printf("Usage: %s OPTIONS\n"
|
||||
+ "-b print only fw boot selected sections\n"
|
||||
+ "-f file_to_search (default /dev/mem)\n"
|
||||
+ "-v verbose\n",
|
||||
+ progname);
|
||||
+ exit(1);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = fwparam_ibft(NULL, filebuf);
|
||||
+
|
||||
+ exit(ret);
|
||||
+}
|
@ -1,111 +0,0 @@
|
||||
diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
|
||||
index 07922ca..873607b 100644
|
||||
--- a/usr/iscsiadm.c
|
||||
+++ b/usr/iscsiadm.c
|
||||
@@ -260,6 +260,19 @@ session_logout(int rid, node_rec_t *rec)
|
||||
}
|
||||
|
||||
static int
|
||||
+session_active(int rid)
|
||||
+{
|
||||
+ iscsiadm_req_t req;
|
||||
+ iscsiadm_rsp_t rsp;
|
||||
+
|
||||
+ memset(&req, 0, sizeof(req));
|
||||
+ req.command = MGMT_IPC_SESSION_ACTIVE;
|
||||
+ req.u.session.rid = rid;
|
||||
+
|
||||
+ return do_iscsid(&ipc_fd, &req, &rsp);
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
config_init(void)
|
||||
{
|
||||
int rc;
|
||||
@@ -726,6 +739,12 @@ main(int argc, char **argv)
|
||||
goto out;
|
||||
}
|
||||
} else if (op == OP_DELETE) {
|
||||
+ rc = session_active(rid);
|
||||
+ if (rc > 0 && rc != MGMT_IPC_ERR_NOT_FOUND) {
|
||||
+ iscsid_handle_error(rc);
|
||||
+ rc = -1;
|
||||
+ goto out;
|
||||
+ }
|
||||
if (idbm_delete_node(db, &rec)) {
|
||||
log_error("can not delete record");
|
||||
rc = -1;
|
||||
diff --git a/usr/mgmt_ipc.c b/usr/mgmt_ipc.c
|
||||
index d1f1eaf..4682b34 100644
|
||||
--- a/usr/mgmt_ipc.c
|
||||
+++ b/usr/mgmt_ipc.c
|
||||
@@ -123,6 +123,27 @@ mgmt_ipc_session_login(struct mgmt_ipc_d
|
||||
}
|
||||
|
||||
static mgmt_ipc_err_e
|
||||
+mgmt_ipc_session_active(queue_task_t *qtask, int rid)
|
||||
+{
|
||||
+ iscsi_session_t *session;
|
||||
+ struct qelem *item;
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < num_providers; i++) {
|
||||
+ item = provider[i].sessions.q_forw;
|
||||
+ while (item != &provider[i].sessions) {
|
||||
+ session = (iscsi_session_t *)item;
|
||||
+ if (session->nrec.id == rid)
|
||||
+ return MGMT_IPC_ERR_ACTIVE;
|
||||
+
|
||||
+ item = item->q_forw;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return MGMT_IPC_ERR_NOT_FOUND;
|
||||
+}
|
||||
+
|
||||
+static mgmt_ipc_err_e
|
||||
mgmt_ipc_session_activelist(queue_task_t *qtask, iscsiadm_rsp_t *rsp)
|
||||
{
|
||||
iscsi_session_t *session;
|
||||
@@ -383,6 +404,9 @@ mgmt_ipc_handle(struct mgmt_ipc_db *dbt,
|
||||
rsp.err = mgmt_ipc_session_sync(dbt, qtask, req.u.session.rid,
|
||||
req.u.session.sid);
|
||||
break;
|
||||
+ case MGMT_IPC_SESSION_ACTIVE:
|
||||
+ rsp.err = mgmt_ipc_session_active(qtask, req.u.session.rid);
|
||||
+ break;
|
||||
case MGMT_IPC_SESSION_ACTIVELIST:
|
||||
rsp.err = mgmt_ipc_session_activelist(qtask, &rsp);
|
||||
immrsp = 1;
|
||||
diff --git a/usr/mgmt_ipc.h b/usr/mgmt_ipc.h
|
||||
index be12070..9564ed5 100644
|
||||
--- a/usr/mgmt_ipc.h
|
||||
+++ b/usr/mgmt_ipc.h
|
||||
@@ -42,6 +42,7 @@ typedef enum mgmt_ipc_err {
|
||||
MGMT_IPC_ERR_ACCESS = 13,
|
||||
MGMT_IPC_ERR_TRANS_CAPS = 14,
|
||||
MGMT_IPC_ERR_EXISTS = 15,
|
||||
+ MGMT_IPC_ERR_ACTIVE = 16,
|
||||
} mgmt_ipc_err_e;
|
||||
|
||||
typedef enum iscsiadm_cmd {
|
||||
@@ -58,6 +59,7 @@ typedef enum iscsiadm_cmd {
|
||||
MGMT_IPC_CONFIG_FILE = 10,
|
||||
MGMT_IPC_IMMEDIATE_STOP = 11,
|
||||
MGMT_IPC_SESSION_SYNC = 12,
|
||||
+ MGMT_IPC_SESSION_ACTIVE = 13,
|
||||
} iscsiadm_cmd_e;
|
||||
|
||||
/* IPC Request */
|
||||
diff --git a/usr/util.c b/usr/util.c
|
||||
index a4c0b5a..ba63850 100644
|
||||
--- a/usr/util.c
|
||||
+++ b/usr/util.c
|
||||
@@ -194,6 +194,7 @@ void iscsid_handle_error(int err)
|
||||
/* 13 */ "daemon access denied",
|
||||
/* 14 */ "iSCSI transport capability failure",
|
||||
/* 15 */ "already exists",
|
||||
+ /* 16 */ "session still active",
|
||||
};
|
||||
log_error("initiator reported error (%d - %s)", err, err_msgs[err]);
|
||||
}
|
90
open-iscsi-check-logmsg-length
Normal file
90
open-iscsi-check-logmsg-length
Normal file
@ -0,0 +1,90 @@
|
||||
commit fa1429ee35e2dc2ea4895ec38216482afc3d95b5
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Wed Apr 2 11:31:18 2008 +0200
|
||||
|
||||
log_syslog might crash upon failure
|
||||
|
||||
log_dequeue returns 1 on two conditions; either the log queue is empty entirely
|
||||
or this is the last message on the queue. When the first condition is true the
|
||||
logger will crash as it tries to access an invalid message.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/usr/iscsid.c b/usr/iscsid.c
|
||||
index 2959821..2fbc387 100644
|
||||
--- a/usr/iscsid.c
|
||||
+++ b/usr/iscsid.c
|
||||
@@ -388,7 +388,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if ((mgmt_ipc_fd = mgmt_ipc_listen()) < 0) {
|
||||
log_close(log_pid);
|
||||
- exit(-1);
|
||||
+ exit(1);
|
||||
}
|
||||
|
||||
if (log_daemon) {
|
||||
@@ -413,7 +413,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if ((control_fd = ipc->ctldev_open()) < 0) {
|
||||
log_close(log_pid);
|
||||
- exit(-1);
|
||||
+ exit(1);
|
||||
}
|
||||
|
||||
chdir("/");
|
||||
@@ -430,7 +430,7 @@ int main(int argc, char *argv[])
|
||||
} else {
|
||||
if ((control_fd = ipc->ctldev_open()) < 0) {
|
||||
log_close(log_pid);
|
||||
- exit(-1);
|
||||
+ exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/usr/log.c b/usr/log.c
|
||||
index 9b82c46..a738454 100644
|
||||
--- a/usr/log.c
|
||||
+++ b/usr/log.c
|
||||
@@ -196,7 +196,7 @@ int log_dequeue (void * buff)
|
||||
int len;
|
||||
|
||||
if (la->empty)
|
||||
- return 1;
|
||||
+ return 0;
|
||||
|
||||
len = strlen((char *)&src->str) * sizeof(char) +
|
||||
sizeof(struct logmsg) + 1;
|
||||
@@ -215,7 +215,7 @@ int log_dequeue (void * buff)
|
||||
|
||||
memset((void *)src, 0, len);
|
||||
|
||||
- return la->empty;
|
||||
+ return len;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -314,19 +314,22 @@ static void __dump_char(int level, unsigned char *buf, int *cp, int ch)
|
||||
|
||||
static void log_flush(void)
|
||||
{
|
||||
+ int msglen;
|
||||
+
|
||||
while (!la->empty) {
|
||||
la->ops[0].sem_op = -1;
|
||||
if (semop(la->semid, la->ops, 1) < 0) {
|
||||
syslog(LOG_ERR, "semop up failed %d", errno);
|
||||
exit(1);
|
||||
}
|
||||
- log_dequeue(la->buff);
|
||||
+ msglen = log_dequeue(la->buff);
|
||||
la->ops[0].sem_op = 1;
|
||||
if (semop(la->semid, la->ops, 1) < 0) {
|
||||
syslog(LOG_ERR, "semop down failed");
|
||||
exit(1);
|
||||
}
|
||||
- log_syslog(la->buff);
|
||||
+ if (msglen)
|
||||
+ log_syslog(la->buff);
|
||||
}
|
||||
}
|
||||
|
151
open-iscsi-cleanup-IPC
Normal file
151
open-iscsi-cleanup-IPC
Normal file
@ -0,0 +1,151 @@
|
||||
commit 824e3244cd75d33653eacde88acc8b456145543c
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Fri Apr 4 13:14:14 2008 +0200
|
||||
|
||||
Cleanup IPC segments and identifiers
|
||||
|
||||
Upon error we're not cleaning up IPC identifiers properly,
|
||||
hence we're leaking IPC ids to the system. Not good.
|
||||
And we're not invalidating the logarea itself, making the
|
||||
daemon crash when started twice.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/usr/log.c b/usr/log.c
|
||||
index a738454..013caed 100644
|
||||
--- a/usr/log.c
|
||||
+++ b/usr/log.c
|
||||
@@ -37,6 +37,33 @@ int log_level = 0;
|
||||
|
||||
static int log_stop_daemon = 0;
|
||||
|
||||
+static void free_logarea (void)
|
||||
+{
|
||||
+ int shmid;
|
||||
+
|
||||
+ if (!la)
|
||||
+ return;
|
||||
+
|
||||
+ if (la->semid != -1)
|
||||
+ semctl(la->semid, 0, IPC_RMID, la->semarg);
|
||||
+ if (la->buff) {
|
||||
+ shmdt(la->buff);
|
||||
+ shmctl(la->shmid_buff, IPC_RMID, NULL);
|
||||
+ la->buff = NULL;
|
||||
+ la->shmid_buff = -1;
|
||||
+ }
|
||||
+ if (la->start) {
|
||||
+ shmdt(la->start);
|
||||
+ shmctl(la->shmid_msg, IPC_RMID, NULL);
|
||||
+ la->start = NULL;
|
||||
+ la->shmid_msg = -1;
|
||||
+ }
|
||||
+ shmid = la->shmid;
|
||||
+ shmdt(la);
|
||||
+ shmctl(shmid, IPC_RMID, NULL);
|
||||
+ la = NULL;
|
||||
+}
|
||||
+
|
||||
static int logarea_init (int size)
|
||||
{
|
||||
int shmid;
|
||||
@@ -48,21 +75,28 @@ static int logarea_init (int size)
|
||||
return 1;
|
||||
|
||||
la = shmat(shmid, NULL, 0);
|
||||
- if (!la)
|
||||
+ if (!la) {
|
||||
+ shmctl(shmid, IPC_RMID, NULL);
|
||||
return 1;
|
||||
+ }
|
||||
+ la->shmid = shmid;
|
||||
+ la->start = NULL;
|
||||
+ la->buff = NULL;
|
||||
+ la->semid = -1;
|
||||
|
||||
if (size < MAX_MSG_SIZE)
|
||||
size = DEFAULT_AREA_SIZE;
|
||||
|
||||
if ((shmid = shmget(IPC_PRIVATE, size,
|
||||
0644 | IPC_CREAT | IPC_EXCL)) == -1) {
|
||||
- shmdt(la);
|
||||
+ free_logarea();
|
||||
return 1;
|
||||
}
|
||||
+ la->shmid_msg = shmid;
|
||||
|
||||
- la->start = shmat(shmid, NULL, 0);
|
||||
+ la->start = shmat(la->shmid_msg, NULL, 0);
|
||||
if (!la->start) {
|
||||
- shmdt(la);
|
||||
+ free_logarea();
|
||||
return 1;
|
||||
}
|
||||
memset(la->start, 0, size);
|
||||
@@ -74,32 +108,27 @@ static int logarea_init (int size)
|
||||
|
||||
if ((shmid = shmget(IPC_PRIVATE, MAX_MSG_SIZE + sizeof(struct logmsg),
|
||||
0644 | IPC_CREAT | IPC_EXCL)) == -1) {
|
||||
- shmdt(la->start);
|
||||
- shmdt(la);
|
||||
+ free_logarea();
|
||||
return 1;
|
||||
}
|
||||
la->buff = shmat(shmid, NULL, 0);
|
||||
if (!la->buff) {
|
||||
- shmdt(la->start);
|
||||
- shmdt(la);
|
||||
+ free_logarea();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((la->semid = semget(SEMKEY, 1, 0600 | IPC_CREAT)) < 0) {
|
||||
- shmdt(la->buff);
|
||||
- shmdt(la->start);
|
||||
- shmdt(la);
|
||||
+ free_logarea();
|
||||
return 1;
|
||||
}
|
||||
|
||||
la->semarg.val=1;
|
||||
if (semctl(la->semid, 0, SETVAL, la->semarg) < 0) {
|
||||
- shmdt(la->buff);
|
||||
- shmdt(la->start);
|
||||
- shmdt(la);
|
||||
+ free_logarea();
|
||||
return 1;
|
||||
}
|
||||
|
||||
+ la->shmid_buff = shmid;
|
||||
la->ops[0].sem_num = 0;
|
||||
la->ops[0].sem_flg = 0;
|
||||
|
||||
@@ -107,14 +136,6 @@ static int logarea_init (int size)
|
||||
|
||||
}
|
||||
|
||||
-static void free_logarea (void)
|
||||
-{
|
||||
- shmdt(la->buff);
|
||||
- shmdt(la->start);
|
||||
- shmdt(la);
|
||||
- semctl(la->semid, 0, IPC_RMID, la->semarg);
|
||||
-}
|
||||
-
|
||||
#if LOGDBG
|
||||
static void dump_logarea (void)
|
||||
{
|
||||
diff --git a/usr/log.h b/usr/log.h
|
||||
index 4816a1b..4d2a265 100644
|
||||
--- a/usr/log.h
|
||||
+++ b/usr/log.h
|
||||
@@ -51,6 +51,9 @@ struct logmsg {
|
||||
};
|
||||
|
||||
struct logarea {
|
||||
+ int shmid;
|
||||
+ int shmid_msg;
|
||||
+ int shmid_buff;
|
||||
int empty;
|
||||
void *head;
|
||||
void *tail;
|
52
open-iscsi-discover-all-targets
Normal file
52
open-iscsi-discover-all-targets
Normal file
@ -0,0 +1,52 @@
|
||||
--- open-iscsi-2.0-707/etc/initd/initd.suse 2007/11/15 13:42:43 1.37
|
||||
+++ open-iscsi-2.0-707/etc/initd/initd.suse 2007/11/30 08:10:00
|
||||
@@ -94,6 +94,38 @@
|
||||
done
|
||||
}
|
||||
|
||||
+iscsi_discover_all_targets()
|
||||
+{
|
||||
+ # Strip off any existing ID information
|
||||
+ RAW_NODE_LIST=`iscsiadm -m node | sed -nre 's/^(\[[0-9a-f]*\] )?(.*)$/\2/p'`
|
||||
+ # Obtain IPv4 list
|
||||
+ IPV4_NODE_LIST=`echo "$RAW_NODE_LIST" | sed -nre 's/^([0-9]{1,3}(\.[0-9]{1,3}){3}):[^: ]* (.*)$/\1 \3/p'`
|
||||
+ # Now obtain IPv6 list
|
||||
+ IPV6_NODE_LIST=`echo "$RAW_NODE_LIST" | sed -nre 's/^([0-9a-f]{1,4}(:[0-9a-f]{0,4}){6}:[0-9a-f]{1,4}):[^: ]* (.*)$/\1 \3/p'`
|
||||
+
|
||||
+ DISC_TARGETS=""
|
||||
+ while read NODE_ADDR NODE_NAME; do
|
||||
+ [ -z "$NODE_ADDR" -a -z "$NODE_NAME" ] && continue
|
||||
+ NODE_ATTRS=`iscsiadm -m node -p "$NODE_ADDR" -T "$NODE_NAME"`
|
||||
+ NODE_STATUS=`echo "$NODE_ATTRS" | sed -nre 's/^.*node\.conn\[0\]\.startup = ([a-z]*).*$/\1/p'`
|
||||
+
|
||||
+ if [ "$NODE_STATUS" == 'automatic' ]; then
|
||||
+ DISC_TARGETS=`echo "$DISC_TARGETS" | sed -re '/'"$NODE_ADDR"'/!{s/(.*)/\1 '"$NODE_ADDR"'/}'`
|
||||
+ fi
|
||||
+ done < <(echo "$IPV4_NODE_LIST"; echo "$IPV6_NODE_LIST")
|
||||
+
|
||||
+ for TARGET_ADDR in $DISC_TARGETS; do
|
||||
+ echo -n "Attempting discovery on target at ${TARGET_ADDR}: "
|
||||
+ iscsiadm -m discovery -t st -p "$TARGET_ADDR" > /dev/null 2>&1
|
||||
+ if [ "$?" -ne 0 ]; then
|
||||
+ rc_failed 1
|
||||
+ rc_status -v
|
||||
+ return 1
|
||||
+ fi
|
||||
+ rc_status -v
|
||||
+ done
|
||||
+}
|
||||
+
|
||||
case "$1" in
|
||||
start)
|
||||
[ ! -d /var/lib/iscsi ] && mkdir -p /var/lib/iscsi
|
||||
@@ -108,6 +140,10 @@
|
||||
rc_status -v
|
||||
fi
|
||||
if [ "$RETVAL" == "0" ]; then
|
||||
+ iscsi_discover_all_targets
|
||||
+ RETVAL=$?
|
||||
+ fi
|
||||
+ if [ "$RETVAL" == "0" ]; then
|
||||
iscsi_login_all_nodes
|
||||
fi
|
||||
;;
|
25
open-iscsi-dont-fail-init-script-on-stop
Normal file
25
open-iscsi-dont-fail-init-script-on-stop
Normal file
@ -0,0 +1,25 @@
|
||||
commit f866141b55c21b4697f31309054fb4ecdcda19b6
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Mon Mar 17 15:21:21 2008 +0100
|
||||
|
||||
Don't fail SUSE init script when calling 'stop' twice
|
||||
|
||||
When calling SUSE init script twice with 'stop' or once when
|
||||
the daemon is not running, it will return failed.
|
||||
|
||||
References: 369300
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/etc/initd/initd.suse b/etc/initd/initd.suse
|
||||
index a8b4a0c..d8b91cc 100644
|
||||
--- a/etc/initd/initd.suse
|
||||
+++ b/etc/initd/initd.suse
|
||||
@@ -176,7 +176,7 @@ case "$1" in
|
||||
fi
|
||||
rc_failed $status
|
||||
else
|
||||
- rc_failed 1
|
||||
+ rc_failed $RETVAL
|
||||
fi
|
||||
rc_status -v
|
||||
;;
|
98
open-iscsi-fix-suse-build
Normal file
98
open-iscsi-fix-suse-build
Normal file
@ -0,0 +1,98 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 8eb812c..167138f 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -15,7 +15,7 @@ etcdir = /etc
|
||||
initddir = $(etcdir)/init.d
|
||||
|
||||
MANPAGES = doc/iscsid.8 doc/iscsiadm.8 doc/iscsi_discovery.8
|
||||
-PROGRAMS = usr/iscsid usr/iscsiadm utils/iscsi_discovery utils/iscsi-iname
|
||||
+PROGRAMS = usr/iscsid usr/iscsiadm utils/iscsi_discovery utils/iscsi-iname utils/fwparam_ibft/fwparam_ibft
|
||||
INSTALL = install
|
||||
ETCFILES = etc/iscsid.conf
|
||||
IFACEFILES = etc/iface.example
|
||||
@@ -54,7 +54,7 @@ clean:
|
||||
install_etc install_iface install_doc install_kernel install_iname
|
||||
|
||||
install: install_kernel install_programs install_doc install_etc \
|
||||
- install_initd install_iname install_iface
|
||||
+ install_initd
|
||||
|
||||
install_usr: install_programs install_doc install_etc \
|
||||
install_initd install_iname install_iface
|
||||
diff --git a/kernel/Makefile b/kernel/Makefile
|
||||
index bf67fec..268758d 100644
|
||||
--- a/kernel/Makefile
|
||||
+++ b/kernel/Makefile
|
||||
@@ -32,11 +32,16 @@ V ?= 0
|
||||
# eg to compile for a kernel that you aren't currently running
|
||||
KERNELRELEASE ?= $(shell uname -r)
|
||||
KSRC ?= /lib/modules/$(KERNELRELEASE)/build
|
||||
+KSRC := $(shell test -f $(KSRC)/Makefile || echo "")
|
||||
KBUILD_OUTPUT ?=
|
||||
# this is the basic Kbuild invocation, just append your make target
|
||||
KBUILD_BASE = +$(MAKE) -C $(KSRC) M=`pwd` KBUILD_OUTPUT=$(KBUILD_OUTPUT) $(KARCH) V=$(V)
|
||||
|
||||
-all: kernel_check
|
||||
+all: kernel_src
|
||||
+
|
||||
+kernel_src: $(shell test -n "$(KSRC)" && echo has_kernel_src)
|
||||
+
|
||||
+has_kernel_src: kernel_check
|
||||
$(KBUILD_BASE) modules
|
||||
|
||||
# ============ BEGIN code for kernel_check and source patching ================
|
||||
@@ -58,9 +63,11 @@ cur_patched=cur_patched
|
||||
# check to see if code is unpatched
|
||||
unpatch_code=$(shell test -e $(cur_patched) && echo do_unpatch_code )
|
||||
|
||||
-KSUBLEVEL = $(shell cat $(KSRC)/Makefile | awk -F= '/^SUBLEVEL =/ {print $$2}' | \
|
||||
+KSUBLEVEL = $(shell cat $(KSRC)/Makefile 2> /dev/null | awk -F= '/^SUBLEVEL =/ {print $$2}' | \
|
||||
sed 's/^[ \t]*//;s/[ \t]*$$//')
|
||||
|
||||
+KSUBLEVEL?=$(shell echo $(KERNELRELEASE) | sed -n 's/.\..\.\([[:digit:]]*\)\..*/\1/p')
|
||||
+
|
||||
KERNEL_TARGET=linux_2_6_$(KSUBLEVEL)
|
||||
kernel_check: $(KERNEL_TARGET)
|
||||
|
||||
@@ -114,7 +121,11 @@ has_20to21_patch: $(20to21_patch)
|
||||
|
||||
# ============ END code for kernel_check and source patching =================
|
||||
|
||||
-clean: $(unpatch_code)
|
||||
+clean: clean_kernel_src
|
||||
+
|
||||
+clean_kernel_src: $(shell test -n "$(KSRC)" && echo has_clean_kernel_src)
|
||||
+
|
||||
+has_clean_kernel_src: $(unpatch_code)
|
||||
$(KBUILD_BASE) clean
|
||||
rm -f Module.symvers
|
||||
|
||||
@@ -164,7 +164,9 @@ ko = $(patsubst %.o,%.ko,$(obj-m))
|
||||
$(ko): all
|
||||
|
||||
# now the actual command
|
||||
-install_kernel: $(ko)
|
||||
+install_kernel: $(shell test -n "$(KSRC)" && echo install_kernel_obj);
|
||||
+
|
||||
+install_kernel_obj: $(ko)
|
||||
$(KBUILD_BASE) modules_install INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) INSTALL_MOD_PATH=$(INSTALL_MOD_PATH)
|
||||
|
||||
# vim: ft=make tw=72 sw=4 ts=4:
|
||||
diff --git a/usr/Makefile b/usr/Makefile
|
||||
index bf67fec..268758d 100644
|
||||
--- a/usr/Makefile
|
||||
+++ b/usr/Makefile
|
||||
@@ -7,9 +7,11 @@ OSNAME=$(shell uname -s)
|
||||
KERNELRELEASE ?= $(shell uname -r)
|
||||
KSRC ?= /lib/modules/$(KERNELRELEASE)/build
|
||||
|
||||
-KSUBLEVEL=$(shell cat $(KSRC)/Makefile | awk -F= '/^SUBLEVEL =/ {print $$2}' | \
|
||||
+KSUBLEVEL=$(shell cat $(KSRC)/Makefile 2> /dev/null | awk -F= '/^SUBLEVEL =/ {print $$2}' | \
|
||||
sed 's/^[ \t]*//;s/[ \t]*$$//')
|
||||
|
||||
+KSUBLEVEL?=$(shell echo $OSNAME | sed -n 's/.\..\.\([[:digit:]]*\)\..*/\1/p')
|
||||
+
|
||||
ifeq ($(OSNAME),Linux)
|
||||
ifeq ($(KSUBLEVEL),11)
|
||||
IPC_CFLAGS=-DNETLINK_ISCSI=12 -D_GNU_SOURCE
|
11
open-iscsi-fixup-debug-option
Normal file
11
open-iscsi-fixup-debug-option
Normal file
@ -0,0 +1,11 @@
|
||||
--- open-iscsi-2.0-865/usr/iscsiadm.c 2007/12/13 07:37:12 1.5
|
||||
+++ open-iscsi-2.0-865/usr/iscsiadm.c 2007/12/13 07:30:41
|
||||
@@ -80,7 +80,7 @@
|
||||
{"logoutall", required_argument, NULL, 'U'},
|
||||
{"stats", no_argument, NULL, 's'},
|
||||
{"killiscsid", required_argument, NULL, 'k'},
|
||||
- {"debug", required_argument, NULL, 'g'},
|
||||
+ {"debug", required_argument, NULL, 'd'},
|
||||
{"show", no_argument, NULL, 'S'},
|
||||
{"version", no_argument, NULL, 'V'},
|
||||
{"help", no_argument, NULL, 'h'},
|
34
open-iscsi-fixup-init-script
Normal file
34
open-iscsi-fixup-init-script
Normal file
@ -0,0 +1,34 @@
|
||||
--- open-iscsi-2.0-865/etc/initd/initd.suse 2007/12/06 07:55:12 1.9
|
||||
+++ open-iscsi-2.0-865/etc/initd/initd.suse 2007/12/06 10:38:32
|
||||
@@ -34,19 +34,26 @@
|
||||
iscsi_login_all_nodes()
|
||||
{
|
||||
echo -n "Setting up iSCSI targets: "
|
||||
- $ISCSIADM -m node --loginall=automatic
|
||||
+ $ISCSIADM -m node --loginall=automatic 2> /dev/null
|
||||
+ if [ $? == 19 ] ; then
|
||||
+ rc_failed 6
|
||||
+ fi
|
||||
rc_status -v
|
||||
}
|
||||
|
||||
iscsi_logout_all_nodes()
|
||||
{
|
||||
+ echo -n "Closing all iSCSI connections: "
|
||||
# Logout from all active sessions
|
||||
- if $ISCSIADM -m node --logoutall=all ; then
|
||||
- rc_status -v
|
||||
- else
|
||||
- RETVAL=$?
|
||||
+ if ! $ISCSIADM -m node --logoutall=automatic 2> /dev/null; then
|
||||
+ if [ $? == 19 ] ; then
|
||||
+ RETVAL=6
|
||||
+ else
|
||||
+ RETVAL=1
|
||||
+ fi
|
||||
rc_failed $RETVAL
|
||||
fi
|
||||
+ rc_status -v
|
||||
|
||||
# Not sure whether this is still needed
|
||||
sleep 1
|
29
open-iscsi-format-luns
Normal file
29
open-iscsi-format-luns
Normal file
@ -0,0 +1,29 @@
|
||||
commit 1a44165c0757fb3aefd0fae0cb1554756b38c2a6
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Mon Mar 10 10:56:15 2008 +0100
|
||||
|
||||
Format LUNs correctly
|
||||
|
||||
We are printing two characters at a time, so we should skip the same
|
||||
amount of characters for each round.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/utils/fwparam_ibft/fwparam_ibft.c b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
index d6b8b7f..dcc63c3 100644
|
||||
--- a/utils/fwparam_ibft/fwparam_ibft.c
|
||||
+++ b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
@@ -81,8 +81,11 @@ format_lun(char *buf, size_t size, uint8_t *lun)
|
||||
{
|
||||
int i;
|
||||
|
||||
- for (i = 0; i < 8; i++)
|
||||
- snprintf(buf++, size--, "%x", lun[i]);
|
||||
+ for (i = 0; i < 8; i++) {
|
||||
+ snprintf(buf, size, "%02x", lun[i]);
|
||||
+ buf += 2;
|
||||
+ size -= 2;
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
69
open-iscsi-fwparam-scan-in-blocks
Normal file
69
open-iscsi-fwparam-scan-in-blocks
Normal file
@ -0,0 +1,69 @@
|
||||
diff --git a/kernel/iscsi_tcp.c b/kernel/iscsi_tcp.c
|
||||
diff --git a/kernel/iscsi_tcp.h b/kernel/iscsi_tcp.h
|
||||
diff --git a/kernel/libiscsi.c b/kernel/libiscsi.c
|
||||
diff --git a/kernel/libiscsi.h b/kernel/libiscsi.h
|
||||
diff --git a/kernel/scsi_transport_iscsi.c b/kernel/scsi_transport_iscsi.c
|
||||
diff --git a/kernel/scsi_transport_iscsi.h b/kernel/scsi_transport_iscsi.h
|
||||
diff --git a/usr/discovery.c b/usr/discovery.c
|
||||
diff --git a/usr/idbm.c b/usr/idbm.c
|
||||
diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
|
||||
diff --git a/utils/fwparam_ibft/fwparam_ibft.c b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
index 02f8ac8..4557016 100644
|
||||
--- a/utils/fwparam_ibft/fwparam_ibft.c
|
||||
+++ b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
@@ -39,6 +39,8 @@ int debug;
|
||||
int dev_count;
|
||||
char filename[FILENAMESZ];
|
||||
|
||||
+char ID_ROMEXT[]={0x55, 0xaa, 0}; /* extended rom magic */
|
||||
+
|
||||
const char nulls[16]; /* defaults to zero */
|
||||
|
||||
int
|
||||
@@ -408,22 +410,38 @@ dump_ibft(void *ibft_loc, struct boot_context *context)
|
||||
|
||||
char *search_ibft(unsigned char *start, int length)
|
||||
{
|
||||
- unsigned char *cur_ptr;
|
||||
+ unsigned char *cur_ptr, *rom_end;
|
||||
struct ibft_table_hdr *ibft_hdr;
|
||||
- unsigned char check_sum;
|
||||
+ unsigned char check_sum, rom_size;
|
||||
uint32_t i;
|
||||
|
||||
cur_ptr = (unsigned char *)start;
|
||||
- for (cur_ptr = (unsigned char *)start;
|
||||
- cur_ptr < (start + length);
|
||||
- cur_ptr++) {
|
||||
- if (memcmp(cur_ptr, iBFTSTR,strlen(iBFTSTR)))
|
||||
+ while (cur_ptr < (start + length)) {
|
||||
+ if (memcmp(cur_ptr, ID_ROMEXT, strlen(ID_ROMEXT)) != 0) {
|
||||
+ /* Skip this block */
|
||||
+ cur_ptr += 512;
|
||||
continue;
|
||||
+ }
|
||||
+ memcpy(&rom_size, cur_ptr + 2, 1);
|
||||
+ /* Don't search past the end of the ROM BIOS block */
|
||||
+ rom_end = cur_ptr + (rom_size * 512) - strlen(iBFTSTR);
|
||||
+ while (cur_ptr < rom_end) {
|
||||
+ if (!memcmp(cur_ptr, iBFTSTR,strlen(iBFTSTR)))
|
||||
+ break;
|
||||
+ cur_ptr++;
|
||||
+ }
|
||||
+
|
||||
+ if (cur_ptr == rom_end) {
|
||||
+ cur_ptr += strlen(iBFTSTR);
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
ibft_hdr = (struct ibft_table_hdr *)cur_ptr;
|
||||
/* Make sure it's correct version. */
|
||||
- if (ibft_hdr->revision != iBFT_REV)
|
||||
+ if (ibft_hdr->revision != iBFT_REV) {
|
||||
+ cur_ptr = rom_end + strlen(iBFTSTR);
|
||||
continue;
|
||||
+ }
|
||||
|
||||
/* Make sure that length is valid. */
|
||||
if ((cur_ptr + ibft_hdr->length) <= (start + length)) {
|
||||
diff --git a/utils/fwparam_ibft/fwparam_ibft.h b/utils/fwparam_ibft/fwparam_ibft.h
|
File diff suppressed because it is too large
Load Diff
22
open-iscsi-fwparam_ppc-string-overflow
Normal file
22
open-iscsi-fwparam_ppc-string-overflow
Normal file
@ -0,0 +1,22 @@
|
||||
diff --git a/utils/fwparam_ibft/fwparam_ppc.c b/utils/fwparam_ibft/fwparam_ppc.c
|
||||
index b040837..6d344d1 100644
|
||||
--- a/utils/fwparam_ibft/fwparam_ppc.c
|
||||
+++ b/utils/fwparam_ibft/fwparam_ppc.c
|
||||
@@ -436,10 +436,14 @@ int fwparam_ppc(struct boot_context *context, const char *filepath)
|
||||
* the appropriate FCODE with a load method.
|
||||
*/
|
||||
if (filepath) {
|
||||
- strncat(filename, filepath, FILENAMESZ);
|
||||
+ strncat(filename, filepath, FILENAMESZ - 1);
|
||||
+ filename[FILENAMESZ - 1] = '\0';
|
||||
fplen = strlen(filename);
|
||||
- } else
|
||||
- strncat(filename, DT_TOP, FILENAMESZ);
|
||||
+ } else {
|
||||
+ strncat(filename, DT_TOP, FILENAMESZ - 1);
|
||||
+ filename[FILENAMESZ - 1] = '\0';
|
||||
+ fplen = strlen(filename);
|
||||
+ }
|
||||
|
||||
strncat(filename + fplen, BOOTPATH, FILENAMESZ - fplen);
|
||||
|
13652
open-iscsi-git-update
13652
open-iscsi-git-update
File diff suppressed because it is too large
Load Diff
110
open-iscsi-ibft-fill-initiator-values
Normal file
110
open-iscsi-ibft-fill-initiator-values
Normal file
@ -0,0 +1,110 @@
|
||||
commit 18cbe8c5f68e5e545d02f773da03f52deadfd45b
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Wed Mar 12 10:36:30 2008 +0100
|
||||
|
||||
Fill in initiator values for iBFT context
|
||||
|
||||
The iBFT context already contains the fields for the initiator,
|
||||
so we can as well fill them with something sensible.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/include/fw_context.h b/include/fw_context.h
|
||||
index 47ac6ae..f6999e3 100644
|
||||
--- a/include/fw_context.h
|
||||
+++ b/include/fw_context.h
|
||||
@@ -33,8 +33,9 @@ struct boot_context {
|
||||
char chap_password_in[16];
|
||||
char iface[42];
|
||||
char mac[18];
|
||||
- char ipaddr[18];
|
||||
- char mask[18];
|
||||
+ char ipaddr[32];
|
||||
+ char mask[19];
|
||||
+ char gwaddr[32];
|
||||
char lun[17];
|
||||
char vlan[15];
|
||||
char isid[10];
|
||||
diff --git a/utils/fwparam_ibft/fwparam_ibft.c b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
index 4397f94..3801028 100644
|
||||
--- a/utils/fwparam_ibft/fwparam_ibft.c
|
||||
+++ b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
@@ -150,6 +150,32 @@ format_ipaddr(char *buf, size_t size, uint8_t *ip)
|
||||
|
||||
}
|
||||
|
||||
+void
|
||||
+format_netmask(char *buf, size_t size, uint8_t mask)
|
||||
+{
|
||||
+ uint32_t tmp;
|
||||
+
|
||||
+ tmp = 0xffffffff << (32 - mask);
|
||||
+ sprintf(buf,"%d.%d.%d.%d",
|
||||
+ (tmp >> 24) & 0xff,
|
||||
+ (tmp >> 16) & 0xff,
|
||||
+ (tmp >> 8) & 0xff,
|
||||
+ tmp & 0xff);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+format_mac(char *buf, size_t size, uint8_t *mac)
|
||||
+{
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < 5; i++) {
|
||||
+ sprintf(buf, "%02x:", mac[i]);
|
||||
+ buf += 3;
|
||||
+ }
|
||||
+ sprintf(buf, "%02x", mac[i]);
|
||||
+}
|
||||
+
|
||||
+
|
||||
/*
|
||||
* Dump the 16 byte ipaddr, as IPV6 or IPV4.
|
||||
*/
|
||||
@@ -385,6 +411,45 @@ dump_ibft(void *ibft_loc, struct boot_context *context)
|
||||
(char *)ibft_loc+initiator->initiator_name_off,
|
||||
initiator->initiator_name_len + 1);
|
||||
|
||||
+ if (nic0 && (nic0->hdr.flags & INIT_FLAG_FW_SEL_BOOT)) {
|
||||
+ format_ipaddr(buf, sizeof(buf),
|
||||
+ nic0->ip_addr);
|
||||
+ strcpy((char *)context->ipaddr, buf);
|
||||
+
|
||||
+ format_ipaddr(buf, sizeof(buf),
|
||||
+ nic0->gateway);
|
||||
+ strcpy((char *)context->gwaddr, buf);
|
||||
+
|
||||
+ format_mac(buf, sizeof(buf),
|
||||
+ nic0->mac);
|
||||
+ strcpy((char *)context->mac, buf);
|
||||
+
|
||||
+ format_netmask(buf, sizeof(buf),
|
||||
+ nic0->subnet_mask_prefix);
|
||||
+ strcpy((char *)context->mask, buf);
|
||||
+ }
|
||||
+
|
||||
+ if (nic1 && (nic1->hdr.flags & INIT_FLAG_FW_SEL_BOOT)) {
|
||||
+ format_ipaddr(buf, sizeof(buf),
|
||||
+ nic1->ip_addr);
|
||||
+ strncpy((char *)context->ipaddr, buf,
|
||||
+ sizeof(buf));
|
||||
+ format_ipaddr(buf, sizeof(buf),
|
||||
+ nic1->gateway);
|
||||
+ strncpy((char *)context->gwaddr, buf,
|
||||
+ sizeof(buf));
|
||||
+
|
||||
+ format_mac(buf, sizeof(buf),
|
||||
+ nic1->mac);
|
||||
+ strncpy((char *)context->mac, buf,
|
||||
+ sizeof(buf));
|
||||
+
|
||||
+ format_netmask(buf, sizeof(buf),
|
||||
+ nic1->subnet_mask_prefix);
|
||||
+ strncpy((char *)context->mask, buf,
|
||||
+ sizeof(buf));
|
||||
+ }
|
||||
+
|
||||
if (tgt0 && (tgt0->hdr.flags & INIT_FLAG_FW_SEL_BOOT)) {
|
||||
strncpy((char *)context->targetname,
|
||||
(char *)(ibft_loc+tgt0->tgt_name_off),
|
105
open-iscsi-ibft-print-ifspec
Normal file
105
open-iscsi-ibft-print-ifspec
Normal file
@ -0,0 +1,105 @@
|
||||
commit 01ce5f6e4f9859aab2b3a7b36ca59e010af1d10a
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Wed Mar 12 10:37:47 2008 +0100
|
||||
|
||||
Implement '-i' to print out ifspec line
|
||||
|
||||
For the initrd we can easily print out the required
|
||||
ifspec line, saving us quite some hassle there.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/utils/fwparam_ibft/fwparam_main.c b/utils/fwparam_ibft/fwparam_main.c
|
||||
index 3a91b52..95a1a4d 100644
|
||||
--- a/utils/fwparam_ibft/fwparam_main.c
|
||||
+++ b/utils/fwparam_ibft/fwparam_main.c
|
||||
@@ -27,22 +27,56 @@
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <dirent.h>
|
||||
|
||||
#include "fwparam_ibft.h"
|
||||
#include "fw_context.h"
|
||||
|
||||
extern int debug;
|
||||
|
||||
+int get_ifnum_from_mac(char *mac)
|
||||
+{
|
||||
+ int ifnum = -1, fd;
|
||||
+ DIR *d;
|
||||
+ struct dirent *dent;
|
||||
+ char buf[20], attr[64];
|
||||
+
|
||||
+ d = opendir("/sys/class/net");
|
||||
+ while ((dent = readdir(d))) {
|
||||
+ if (dent->d_name[0] == '.')
|
||||
+ continue;
|
||||
+
|
||||
+ sprintf(attr,"/sys/class/net/%s/address", dent->d_name);
|
||||
+ fd = open(attr,O_RDONLY);
|
||||
+ if (!fd)
|
||||
+ continue;
|
||||
+
|
||||
+ read(fd, buf, 18);
|
||||
+ close(fd);
|
||||
+
|
||||
+ if (strncmp(mac, buf, strlen(mac)))
|
||||
+ continue;
|
||||
+
|
||||
+ if (sscanf(dent->d_name,"eth%d", &ifnum) == 1)
|
||||
+ break;
|
||||
+ }
|
||||
+ closedir(d);
|
||||
+
|
||||
+ return ifnum;
|
||||
+}
|
||||
+
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
- int option, ret;
|
||||
+ int option, ret, do_ipconfig = 0;
|
||||
char *progname, *filebuf = NULL;
|
||||
+ struct boot_context ctxt;
|
||||
|
||||
progname = argv[0];
|
||||
|
||||
while (1) {
|
||||
- option = getopt(argc, argv, "f:vhb");
|
||||
+ option = getopt(argc, argv, "f:ivhb");
|
||||
if (option == -1)
|
||||
break;
|
||||
switch (option) {
|
||||
@@ -52,6 +86,9 @@ main (int argc, char **argv)
|
||||
case 'f':
|
||||
filebuf = optarg;
|
||||
break;
|
||||
+ case 'i':
|
||||
+ do_ipconfig = 1;
|
||||
+ break;
|
||||
case 'v':
|
||||
debug++;
|
||||
break;
|
||||
@@ -67,7 +104,18 @@ main (int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
- ret = fwparam_ibft(NULL, filebuf);
|
||||
-
|
||||
+ if (!do_ipconfig)
|
||||
+ ret = fwparam_ibft(NULL, filebuf);
|
||||
+ else {
|
||||
+ ret = fwparam_ibft(&ctxt, filebuf);
|
||||
+ if (!ret)
|
||||
+ /*
|
||||
+ * Format is:
|
||||
+ * ipaddr:peeraddr:gwaddr:mask:hostname:iface:none
|
||||
+ */
|
||||
+ printf("%s::%s:%s::eth%d:ibft\n",
|
||||
+ ctxt.ipaddr, ctxt.gwaddr,
|
||||
+ ctxt.mask, get_ifnum_from_mac(ctxt.mac));
|
||||
+ }
|
||||
exit(ret);
|
||||
}
|
24
open-iscsi-print-ibft-error-to-stderr
Normal file
24
open-iscsi-print-ibft-error-to-stderr
Normal file
@ -0,0 +1,24 @@
|
||||
commit daa06c2b0c0351fda9a667dabed426f976e40226
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Fri Apr 4 13:43:25 2008 +0200
|
||||
|
||||
fwparam_ibft: print messages to stderr
|
||||
|
||||
When no iBFT was found a message would be printed to stdout,
|
||||
confusing any parsing scripts.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/utils/fwparam_ibft/fwparam_ibft.c b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
index 3801028..dc0fc6b 100644
|
||||
--- a/utils/fwparam_ibft/fwparam_ibft.c
|
||||
+++ b/utils/fwparam_ibft/fwparam_ibft.c
|
||||
@@ -612,7 +612,7 @@ fwparam_ibft(struct boot_context *context, const char *filepath)
|
||||
if (ibft_loc)
|
||||
ret = dump_ibft(ibft_loc, context);
|
||||
else {
|
||||
- printf("Could not find iBFT.\n");
|
||||
+ fprintf(stderr, "Could not find iBFT.\n");
|
||||
ret = -1;
|
||||
}
|
||||
munmap(filebuf, end_search);
|
@ -1,52 +0,0 @@
|
||||
tree 52d73cd6c3e3eb7baac92e9bdb524e47b39a7969
|
||||
parent bf0e6c96e01cfb9ff8a5232c93866a5bbbe0d76b
|
||||
author Hannes Reinecke <hare@suse.de> 1183549502 +0200
|
||||
committer Hannes Reinecke <hare@suse.de> 1183549502 +0200
|
||||
|
||||
Fix SuSE init script
|
||||
|
||||
Our build checker found several omissions in the init script.
|
||||
So have it fixed.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
505f63168e98bf0a09ed2582d2d684b77d485193
|
||||
etc/initd/initd.suse | 13 +++++++++++--
|
||||
1 files changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/etc/initd/initd.suse b/etc/initd/initd.suse
|
||||
index 163479e..651891c 100644
|
||||
--- a/etc/initd/initd.suse
|
||||
+++ b/etc/initd/initd.suse
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
-# /etc/init.d/iscsi
|
||||
+# /etc/init.d/open-iscsi
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: iscsi
|
||||
@@ -11,7 +11,12 @@
|
||||
# Default-Start: 3 5
|
||||
# Default-Stop:
|
||||
# Short-Description: Starts and stops the iSCSI client initiator
|
||||
-#
|
||||
+# Description: Start iSCSI iniitiator
|
||||
+# The iSCSI protocol provides access to a SCSI device
|
||||
+# across a network. This script initalizes and starts
|
||||
+# the iSCSI initiator daemon which manages the access to
|
||||
+# these devices. The iSCSI devices itself appear as normal
|
||||
+# SCSI disks to the operating system.
|
||||
### END INIT INFO
|
||||
|
||||
PID_FILE=/var/run/iscsi.pid
|
||||
@@ -111,6 +116,10 @@ case "$1" in
|
||||
sleep 1
|
||||
$0 start
|
||||
;;
|
||||
+ reload)
|
||||
+ rc_failed 0
|
||||
+ rc_status -v
|
||||
+ ;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|status|restart}"
|
||||
exit 1
|
205
open-iscsi-teardown-device-stack
Normal file
205
open-iscsi-teardown-device-stack
Normal file
@ -0,0 +1,205 @@
|
||||
commit 6005e4dab173f021b35da79e763ab0dd40d94a08
|
||||
Author: Hannes Reinecke <hare@suse.de>
|
||||
Date: Thu Apr 10 16:37:02 2008 +0200
|
||||
|
||||
Tear down device stack before logging out
|
||||
|
||||
We have to tear down the entire device stack before logging
|
||||
out of any iSCSI portal, otherwise the system won't be
|
||||
able to do a clean umount.
|
||||
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||
|
||||
diff --git a/etc/initd/initd.suse b/etc/initd/initd.suse
|
||||
index d8b91cc..18bd889 100644
|
||||
--- a/etc/initd/initd.suse
|
||||
+++ b/etc/initd/initd.suse
|
||||
@@ -26,6 +26,148 @@ ARGS="-c $CONFIG_FILE -p $PID_FILE"
|
||||
# Reset status of this service
|
||||
rc_reset
|
||||
|
||||
+dm_major()
|
||||
+{
|
||||
+ local maj
|
||||
+
|
||||
+ [ -f /proc/devices ] || echo 0
|
||||
+ maj=$(sed -n 's/\([0-9]*\) device-mapper/\1/p' /proc/devices)
|
||||
+ echo $maj
|
||||
+}
|
||||
+
|
||||
+umount_lun()
|
||||
+{
|
||||
+ local dev=$1
|
||||
+ local d m t l
|
||||
+
|
||||
+ cat /proc/mounts | sed -ne '/^\/dev\/.*/p' | while read d m t o x; do
|
||||
+ if [ "$m" = "/" ] ; then
|
||||
+ continue;
|
||||
+ fi
|
||||
+ l=$d
|
||||
+ [ -L "$d" ] && l=$(readlink -f $d)
|
||||
+
|
||||
+ if [ "${l##/dev/mapper}" != "$l" ] ; then
|
||||
+ t=$(dmsetup info -c --noheadings -o minor ${l##/dev/mapper/})
|
||||
+ l="/dev/dm-$t"
|
||||
+ fi
|
||||
+
|
||||
+ if [ "$l" != "$dev" ] ; then
|
||||
+ continue;
|
||||
+ fi
|
||||
+
|
||||
+ umount $d
|
||||
+ break;
|
||||
+ done
|
||||
+}
|
||||
+
|
||||
+teardown_md()
|
||||
+{
|
||||
+ local dev=${1##/dev/}
|
||||
+ local md_minor
|
||||
+
|
||||
+ md_minor=$(cat /proc/mdstat | sed -n "s/\(md[0-9]*\) : .* $dev.*/\1/p")
|
||||
+
|
||||
+ if [ "$md_minor" ] ; then
|
||||
+ teardown_iscsi /dev/${md_minor}
|
||||
+ mdadm -S /dev/${md_minor}
|
||||
+ return 0
|
||||
+ fi
|
||||
+
|
||||
+ return 1
|
||||
+}
|
||||
+
|
||||
+teardown_dm()
|
||||
+{
|
||||
+ local dev=${1##/dev/}
|
||||
+ local dm_maj=$(dm_major)
|
||||
+ local dm_min
|
||||
+ local retval=1
|
||||
+ local tblname
|
||||
+
|
||||
+ read dev_t < /sys/block/$dev/dev
|
||||
+
|
||||
+ dmsetup table | sed -n "s/\(.*\): .* $dev_t .*/\1/p" | while read tblname; do
|
||||
+ tbluuid=$(dmsetup info -c --noheadings -o uuid $tblname)
|
||||
+ [ -z "$tbluuid" ] && continue
|
||||
+ dm_min=$(dmsetup info -c --noheadings -o minor $tblname)
|
||||
+ if [ ${tbluuid##mpath-} != "$tbluuid" ] ; then
|
||||
+ teardown_iscsi /dev/dm-$dm_min
|
||||
+ dmsetup remove $tblname
|
||||
+ retval=0
|
||||
+ elif [ ${tbluuid##part} != "$tbluuid" ] ; then
|
||||
+ teardown_iscsi /dev/dm-$dm_min
|
||||
+ dmsetup remove $tblname
|
||||
+ retval=0
|
||||
+ elif [ ${tbluuid##LVM-} != "$tbluuid" ] ; then
|
||||
+ # We don't support stacking atop of LVM devices
|
||||
+ umount_lun /dev/dm-$dm_min
|
||||
+ dmsetup remove $tblname
|
||||
+ retval=0
|
||||
+ fi
|
||||
+ done
|
||||
+ return $retval
|
||||
+}
|
||||
+
|
||||
+teardown_block()
|
||||
+{
|
||||
+ local dev=${1##/dev}
|
||||
+ local s
|
||||
+ local p
|
||||
+
|
||||
+ if [ ${dev##/sd} == $dev ] ; then
|
||||
+ return 1
|
||||
+ fi
|
||||
+
|
||||
+ p="/sys/block${dev%%[0-9]*}"
|
||||
+
|
||||
+ if [ ! -d ${p} ] && [ ! -d ${p}/device ] ; then
|
||||
+ continue;
|
||||
+ fi
|
||||
+
|
||||
+ s=$(cd -P ${p}/device && echo $PWD)
|
||||
+
|
||||
+ case "$s" in
|
||||
+ */session[0-9]*/*)
|
||||
+ # This is an iSCSI device
|
||||
+ umount_lun $dev
|
||||
+ return 0
|
||||
+ ;;
|
||||
+ esac
|
||||
+ return 1
|
||||
+}
|
||||
+
|
||||
+teardown_iscsi()
|
||||
+{
|
||||
+ local dev=$1
|
||||
+
|
||||
+ teardown_md $dev && return
|
||||
+
|
||||
+ teardown_dm $dev && return
|
||||
+
|
||||
+ teardown_block $dev && return
|
||||
+
|
||||
+ umount_lun $dev
|
||||
+}
|
||||
+
|
||||
+iscsi_umount_all_luns()
|
||||
+{
|
||||
+ local d m dev p s
|
||||
+
|
||||
+ for target in /sys/class/iscsi_session/session*/device/target* ; do
|
||||
+ [ -e $target ] || continue;
|
||||
+ cd -P $target;
|
||||
+ for lun in *:*:*:*; do
|
||||
+ cd -P /sys/class/scsi_device/$lun/device
|
||||
+ for l in block:* ; do
|
||||
+ [ -e $l ] || continue
|
||||
+ dev=${l##block:}
|
||||
+ teardown_iscsi /dev/$dev
|
||||
+ done
|
||||
+ done
|
||||
+ done
|
||||
+}
|
||||
+
|
||||
iscsi_login_all_nodes()
|
||||
{
|
||||
echo -n "Setting up iSCSI targets: "
|
||||
@@ -55,39 +197,6 @@ iscsi_logout_all_nodes()
|
||||
return ${RETVAL:-0}
|
||||
}
|
||||
|
||||
-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
|
||||
- if [ "$m" = "/" ] ; then
|
||||
- continue;
|
||||
- fi
|
||||
- if [ -L "$d" ] ; then
|
||||
- d=$(readlink -f $d)
|
||||
- fi
|
||||
- dev=${d##/dev}
|
||||
-
|
||||
- if [ "${dev##/sd}" = "$dev" ] ; then
|
||||
- continue;
|
||||
- fi
|
||||
- p="/sys/block${dev%%[0-9]*}"
|
||||
-
|
||||
- if [ ! -d ${p} ] && [ ! -d ${p}/device ] ; then
|
||||
- continue;
|
||||
- fi
|
||||
-
|
||||
- s=$(cd -P ${p}/device && echo $PWD)
|
||||
-
|
||||
- case "$s" in
|
||||
- */session[0-9]*/*)
|
||||
- # This is an iSCSI device
|
||||
- umount "$m"
|
||||
- ;;
|
||||
- esac
|
||||
- done
|
||||
-}
|
||||
-
|
||||
iscsi_list_all_nodes()
|
||||
{
|
||||
# Check for active sessions
|
13
open-iscsi-update-nodes
Normal file
13
open-iscsi-update-nodes
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c
|
||||
index 591ae8c..9e3d47c 100644
|
||||
--- a/usr/iscsiadm.c
|
||||
+++ b/usr/iscsiadm.c
|
||||
@@ -1604,7 +1604,7 @@ do_sofware_sendtargets(idbm_t *db, discovery_rec_t *drec,
|
||||
* ops for them
|
||||
*/
|
||||
if (!op)
|
||||
- op = OP_NEW | OP_DELETE | OP_UPDATE;
|
||||
+ op = OP_NEW | OP_DELETE;
|
||||
|
||||
drec->type = DISCOVERY_TYPE_SENDTARGETS;
|
||||
rc = discovery_sendtargets(db, drec, &new_rec_list);
|
@ -1,9 +1,105 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 15 13:47:21 CEST 2008 - hare@suse.de
|
||||
|
||||
- Synchronize with SLES10 SP2
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 10 16:38:23 CEST 2008 - hare@suse.de
|
||||
|
||||
- Tear down device stack before logging out (bnc#378141)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 4 13:44:56 CEST 2008 - hare@suse.de
|
||||
|
||||
- Don't try to print invalid log messages (bnc#372719)
|
||||
- Cleanup IPC identifiers upon error (bnc#372719)
|
||||
- Print iBFT error messages to stderr (bnc#372725)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 17 15:24:52 CET 2008 - hare@suse.de
|
||||
|
||||
- Don't fail init script if called twice with 'stop' (bnc#369300)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 12 12:11:54 CET 2008 - hare@suse.de
|
||||
|
||||
- Add parameter '-i' to fwparam_ibft for mkinitrd (bnc#277106)
|
||||
- Only logout from targets marked as 'automatic' (bnc#369767)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 10 12:58:25 CET 2008 - hare@suse.de
|
||||
|
||||
- Synchronize with git repository
|
||||
- Fixes to simplify build process
|
||||
- Re-implement fwparam_ibft (bnc#367437)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Mar 5 12:05:05 CET 2008 - hare@suse.de
|
||||
|
||||
- Fixup '-op' to not overwrite other nodes on discovery
|
||||
(bnc#365259)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 18 15:28:03 CET 2008 - hare@suse.de
|
||||
|
||||
- Fixup /etc/init.d/boot.open-iscsi to use correct syntax
|
||||
for iscsiadm (bnc#360674)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 7 16:09:14 CET 2008 - hare@suse.de
|
||||
|
||||
- Add '-op' option to discovery to avoid overwriting
|
||||
of existing nodes (bnc#357197)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 6 14:21:55 CET 2007 - hare@suse.de
|
||||
|
||||
- Update to official version 2.0-866
|
||||
- Include latest git patches (FATE#303021)
|
||||
- Start initiator after iSCSI target (FATE#302415)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 30 09:20:33 CET 2007 - hare@suse.de
|
||||
|
||||
- Rediscover all targets to make sure the network
|
||||
is up (#307930, #251675)
|
||||
- Fixup debug option to iscsiadm (#346504)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 15 15:38:24 CET 2007 - hare@suse.de
|
||||
|
||||
- Do not overwrite existing node records when doing a
|
||||
discovery (#278172)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 26 08:25:21 CEST 2007 - bphilips@suse.de
|
||||
|
||||
- Scan BIOS memory in blocks to avoid crash on buggy
|
||||
BIOS (#293845)
|
||||
- Don't unload modules on stop to avoid kernel oops (#328923)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 2 13:47:20 CEST 2007 - hare@suse.de
|
||||
|
||||
- Fix insecure privileges and credential verification (#280413)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 9 16:40:54 CEST 2007 - hare@suse.de
|
||||
|
||||
- update to svn r866
|
||||
- include latest git patches
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri May 11 10:37:50 CEST 2007 - hare@suse.de
|
||||
|
||||
- Correct target and initiator mixup for ppc (#273600)
|
||||
- Print LUN correctly (#271292)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 26 09:17:21 CEST 2007 - hare@suse.de
|
||||
|
||||
- fwparam_ibft crashes with Broadcom chips (#267458)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 4 10:51:56 CEST 2007 - hare@suse.de
|
||||
|
||||
@ -77,6 +173,14 @@ Mon Jan 15 13:10:53 CET 2007 - hare@suse.de
|
||||
|
||||
- Reference symlink to /etc/iscsid.conf in rpm.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 12 15:58:50 CET 2007 - hare@suse.de
|
||||
|
||||
- update to official version 2.0-707
|
||||
- update to svn r759
|
||||
- Include iBFT BIOS tool (FATE 301671)
|
||||
- Implement compability mode for iscsiadm
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 20 14:14:33 CEST 2006 - hare@suse.de
|
||||
|
||||
|
222
open-iscsi.spec
222
open-iscsi.spec
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package open-iscsi (Version 2.0.866)
|
||||
# spec file for package open-iscsi (Version 2.0.865)
|
||||
#
|
||||
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# This file and all modifications and additions to the pristine
|
||||
# package are under the same license as the package itself.
|
||||
#
|
||||
@ -10,28 +10,43 @@
|
||||
|
||||
# norootforbuild
|
||||
|
||||
|
||||
Name: open-iscsi
|
||||
URL: http://www.open-iscsi.org
|
||||
BuildRequires: bison db-devel flex
|
||||
Url: http://www.open-iscsi.org
|
||||
License: GPL v2 or later
|
||||
Group: Productivity/Networking/Other
|
||||
Prereq: %fillup_prereq %insserv_prereq
|
||||
BuildRequires: bison flex
|
||||
Autoreqprov: on
|
||||
Version: 2.0.866
|
||||
PreReq: %fillup_prereq %insserv_prereq
|
||||
AutoReqProv: on
|
||||
Version: 2.0.865
|
||||
Release: 1
|
||||
Provides: linux-iscsi
|
||||
Obsoletes: linux-iscsi
|
||||
%define iscsi_release 865
|
||||
Summary: Linux* Open-iSCSI Software Initiator
|
||||
Source: %{name}-2.0-865.tar.bz2
|
||||
Source3: boot.open-iscsi
|
||||
Source11: iscsi-gen-initiatorname.sh
|
||||
Patch1: %{name}-866.diff
|
||||
Patch2: %{name}-git-update
|
||||
Patch13: %{name}-suse-init-fixes
|
||||
Patch14: %{name}-fwparam_ppc
|
||||
Patch21: %{name}-check-active-sessions-before-delete
|
||||
Patch3: %{name}-add-discovery-ops
|
||||
Patch4: %{name}-add-suse-boot-script
|
||||
Patch5: %{name}-format-luns
|
||||
Patch22: %{name}-fwparam-scan-in-blocks
|
||||
Patch23: %{name}-umount-all-luns
|
||||
Patch24: %{name}-update-nodes
|
||||
Patch25: %{name}-fixup-init-script
|
||||
Patch26: %{name}-discover-all-targets
|
||||
Patch28: %{name}-fixup-debug-option
|
||||
Patch30: %{name}-backport-fwparam_ibft
|
||||
Patch31: %{name}-fix-suse-build
|
||||
Patch32: %{name}-ibft-fill-initiator-values
|
||||
Patch33: %{name}-ibft-print-ifspec
|
||||
Patch34: %{name}-dont-fail-init-script-on-stop
|
||||
Patch35: %{name}-check-logmsg-length
|
||||
Patch36: %{name}-cleanup-IPC
|
||||
Patch37: %{name}-print-ibft-error-to-stderr
|
||||
Patch38: %{name}-teardown-device-stack
|
||||
Patch39: %{name}-fwparam_ppc-string-overflow
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
@ -60,36 +75,37 @@ Authors:
|
||||
open-iscsi@googlegroups.com
|
||||
|
||||
%prep
|
||||
%setup -n %{name}-2.0-%{iscsi_release}
|
||||
%setup -n %{name}-2.0-865
|
||||
%patch1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch24 -p1
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch28 -p1
|
||||
%patch30 -p1
|
||||
%patch31 -p1
|
||||
%patch32 -p1
|
||||
%patch33 -p1
|
||||
%patch34 -p1
|
||||
%patch35 -p1
|
||||
%patch36 -p1
|
||||
%patch37 -p1
|
||||
%patch38 -p1
|
||||
%patch39 -p1
|
||||
cp etc/iface.example .
|
||||
|
||||
%build
|
||||
%ifarch %ix86 x86_64
|
||||
%define target_arch x86
|
||||
%else
|
||||
%ifarch ppc ppc64
|
||||
%define target_arch ppc
|
||||
%else
|
||||
%define target_arch none
|
||||
%endif
|
||||
%endif
|
||||
%{__make} OPTFLAGS="${RPM_OPT_FLAGS}" -C usr
|
||||
%{__make} OPTFLAGS="${RPM_OPT_FLAGS}" -C utils
|
||||
%{__make} OPTFLAGS="${RPM_OPT_FLAGS}" -C utils/fwparam_ibft
|
||||
%{__make} OPTFLAGS="${RPM_OPT_FLAGS}" -C utils/fwparam_ppc
|
||||
%{__make} OPTFLAGS="${RPM_OPT_FLAGS}"
|
||||
|
||||
%install
|
||||
[ "${RPM_BUILD_ROOT}" != "/" -a -d ${RPM_BUILD_ROOT} ] && rm -rf ${RPM_BUILD_ROOT}
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install_programs
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install_etc
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install_initd_suse
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install_doc
|
||||
install -D -m 755 %{S:11} ${RPM_BUILD_ROOT}/sbin/iscsi-gen-initiatorname
|
||||
install -D -m 755 %{S:3} ${RPM_BUILD_ROOT}/etc/init.d/boot.open-iscsi
|
||||
(cd ${RPM_BUILD_ROOT}/sbin; ln -sf /etc/init.d/open-iscsi rcopen-iscsi)
|
||||
(cd ${RPM_BUILD_ROOT}/etc; ln -sf iscsi/iscsid.conf iscsid.conf)
|
||||
|
||||
@ -98,10 +114,6 @@ install -D -m 755 %{S:3} ${RPM_BUILD_ROOT}/etc/init.d/boot.open-iscsi
|
||||
|
||||
%post
|
||||
%{fillup_and_insserv -Y boot.open-iscsi}
|
||||
if [ -f /etc/initiatorname.iscsi ] ; then
|
||||
mv /etc/initiatorname.iscsi /etc/iscsi
|
||||
ln -sf /etc/iscsi/initiatorname.iscsi /etc/initiatorname.iscsi
|
||||
fi
|
||||
if [ ! -f /etc/iscsi/initiatorname.iscsi ] ; then
|
||||
/sbin/iscsi-gen-initiatorname
|
||||
fi
|
||||
@ -120,133 +132,187 @@ fi
|
||||
%config /etc/init.d/boot.open-iscsi
|
||||
/sbin/*
|
||||
%dir /etc/iscsi
|
||||
%doc iface.example
|
||||
%doc COPYING README
|
||||
%doc %{_mandir}/man8/*
|
||||
|
||||
%changelog
|
||||
* Mon Jul 09 2007 - hare@suse.de
|
||||
* Tue Apr 15 2008 hare@suse.de
|
||||
- Synchronize with SLES10 SP2
|
||||
* Thu Apr 10 2008 hare@suse.de
|
||||
- Tear down device stack before logging out (bnc#378141)
|
||||
* Fri Apr 04 2008 hare@suse.de
|
||||
- Don't try to print invalid log messages (bnc#372719)
|
||||
- Cleanup IPC identifiers upon error (bnc#372719)
|
||||
- Print iBFT error messages to stderr (bnc#372725)
|
||||
* Mon Mar 17 2008 hare@suse.de
|
||||
- Don't fail init script if called twice with 'stop' (bnc#369300)
|
||||
* Wed Mar 12 2008 hare@suse.de
|
||||
- Add parameter '-i' to fwparam_ibft for mkinitrd (bnc#277106)
|
||||
- Only logout from targets marked as 'automatic' (bnc#369767)
|
||||
* Mon Mar 10 2008 hare@suse.de
|
||||
- Synchronize with git repository
|
||||
- Fixes to simplify build process
|
||||
- Re-implement fwparam_ibft (bnc#367437)
|
||||
* Wed Mar 05 2008 hare@suse.de
|
||||
- Fixup '-op' to not overwrite other nodes on discovery
|
||||
(bnc#365259)
|
||||
* Mon Feb 18 2008 hare@suse.de
|
||||
- Fixup /etc/init.d/boot.open-iscsi to use correct syntax
|
||||
for iscsiadm (bnc#360674)
|
||||
* Thu Feb 07 2008 hare@suse.de
|
||||
- Add '-op' option to discovery to avoid overwriting
|
||||
of existing nodes (bnc#357197)
|
||||
* Thu Dec 06 2007 hare@suse.de
|
||||
- Update to official version 2.0-866
|
||||
- Include latest git patches (FATE#303021)
|
||||
- Start initiator after iSCSI target (FATE#302415)
|
||||
* Fri Nov 30 2007 hare@suse.de
|
||||
- Rediscover all targets to make sure the network
|
||||
is up (#307930, #251675)
|
||||
- Fixup debug option to iscsiadm (#346504)
|
||||
* Thu Nov 15 2007 hare@suse.de
|
||||
- Do not overwrite existing node records when doing a
|
||||
discovery (#278172)
|
||||
* Fri Oct 26 2007 bphilips@suse.de
|
||||
- Scan BIOS memory in blocks to avoid crash on buggy
|
||||
BIOS (#293845)
|
||||
- Don't unload modules on stop to avoid kernel oops (#328923)
|
||||
* Thu Aug 02 2007 hare@suse.de
|
||||
- Fix insecure privileges and credential verification (#280413)
|
||||
* Mon Jul 09 2007 hare@suse.de
|
||||
- update to svn r866
|
||||
- include latest git patches
|
||||
* Wed Apr 04 2007 - hare@suse.de
|
||||
* Fri May 11 2007 hare@suse.de
|
||||
- Correct target and initiator mixup for ppc (#273600)
|
||||
- Print LUN correctly (#271292)
|
||||
* Thu Apr 26 2007 hare@suse.de
|
||||
- fwparam_ibft crashes with Broadcom chips (#267458)
|
||||
* Wed Apr 04 2007 hare@suse.de
|
||||
- update to official release 2.0-754
|
||||
- update to svn r779
|
||||
- Include changes from SLES10 SP1
|
||||
* Fri Mar 30 2007 - hare@suse.de
|
||||
* Fri Mar 30 2007 hare@suse.de
|
||||
- Include fwparam_ibft program for OpenPROM (#226682)
|
||||
* Wed Mar 28 2007 - hare@suse.de
|
||||
* Wed Mar 28 2007 hare@suse.de
|
||||
- Return status '6' when root on iSCSI is not enabled (#257979)
|
||||
* Fri Mar 16 2007 - hare@suse.de
|
||||
* Fri Mar 16 2007 hare@suse.de
|
||||
- Fix typo in output of fwparam_ibft (#250445)
|
||||
* Thu Mar 08 2007 - hare@suse.de
|
||||
* Thu Mar 08 2007 hare@suse.de
|
||||
- connect() to the daemon might fail on busy machines (#244649)
|
||||
* Mon Mar 05 2007 - hare@suse.de
|
||||
* Mon Mar 05 2007 hare@suse.de
|
||||
- Add /usr/bin/iscsi-dbconvert to convert SLES10 GA
|
||||
databases to new format (#251298)
|
||||
* Fri Feb 16 2007 - hare@suse.de
|
||||
* Fri Feb 16 2007 hare@suse.de
|
||||
- Fix iscsiadm to print session info correctly (#243203)
|
||||
* Thu Feb 08 2007 - hare@suse.de
|
||||
* Thu Feb 08 2007 hare@suse.de
|
||||
- update to svn r768
|
||||
- Update iSNS support (#243203)
|
||||
- Correct typo in /etc/init.d/boot.open-iscsi (#243203)
|
||||
* Fri Feb 02 2007 - hare@suse.de
|
||||
* Fri Feb 02 2007 hare@suse.de
|
||||
- Umount all luns on shutdown (#223484)
|
||||
* Wed Jan 31 2007 - hare@suse.de
|
||||
* Wed Jan 31 2007 hare@suse.de
|
||||
- Remove the start iSCSI after Xen hack (#231077)
|
||||
- Fixup /etc/init.d/boot.open-iscsi script (#239819)
|
||||
* Thu Jan 18 2007 - hare@suse.de
|
||||
* Thu Jan 18 2007 hare@suse.de
|
||||
- Fix compat mode to display the record id.
|
||||
- Add /sbin/iscsi-gen-initiatorname to generate
|
||||
a default iSCSI initiatorname.
|
||||
* Mon Jan 15 2007 - hare@suse.de
|
||||
* Mon Jan 15 2007 hare@suse.de
|
||||
- Fixup %%post scripts.
|
||||
* Mon Jan 15 2007 - hare@suse.de
|
||||
* Mon Jan 15 2007 hare@suse.de
|
||||
- Reference symlink to /etc/iscsid.conf in rpm.
|
||||
* Fri Oct 20 2006 - hare@suse.de
|
||||
* Fri Jan 12 2007 hare@suse.de
|
||||
- update to official version 2.0-707
|
||||
- update to svn r759
|
||||
- Include iBFT BIOS tool (FATE 301671)
|
||||
- Implement compability mode for iscsiadm
|
||||
* Fri Oct 20 2006 hare@suse.de
|
||||
- Update to svn r713
|
||||
- Use /dev/urandom instead of rand() (#180837)
|
||||
- Fixup init script
|
||||
* Fri Oct 06 2006 - hare@suse.de
|
||||
* Fri Oct 06 2006 hare@suse.de
|
||||
- Update to official version 2.0-707
|
||||
* Fri Jul 28 2006 - olh@suse.de
|
||||
* Fri Jul 28 2006 olh@suse.de
|
||||
- remove unused boot.proc from boot.open-iscsi (#181972)
|
||||
* Mon Jun 19 2006 - hare@suse.de
|
||||
* Mon Jun 19 2006 hare@suse.de
|
||||
- update to svn r606
|
||||
- Include local patches
|
||||
- Fix OCFS2 hangs (#185107, #180773)
|
||||
* Thu Jun 01 2006 - hare@suse.de
|
||||
* Thu Jun 01 2006 hare@suse.de
|
||||
- Added new startmode 'onboot' for root on iSCSI
|
||||
- Added new init script boot.open-iscsi startup
|
||||
iscsid as early as possible (#176804)
|
||||
* Wed May 31 2006 - hare@suse.de
|
||||
* Wed May 31 2006 hare@suse.de
|
||||
- update to svn r595
|
||||
- Include local patches
|
||||
- Fix lockup on target restart for real (#176151)
|
||||
* Mon May 22 2006 - hare@suse.de
|
||||
* Mon May 22 2006 hare@suse.de
|
||||
- update to svn r581
|
||||
- Fix lockup when target is restarted (#176151)
|
||||
- Start open-iscsi after Xen (#177381)
|
||||
* Fri May 19 2006 - hare@suse.de
|
||||
* Fri May 19 2006 hare@suse.de
|
||||
- update to svn r574
|
||||
- Fix machine hang during error recovery (#174166)
|
||||
- Display chap secrets for yast (#149055)
|
||||
* Tue May 02 2006 - hare@suse.de
|
||||
* Tue May 02 2006 hare@suse.de
|
||||
- update to svn r564
|
||||
(contains all local changes)
|
||||
* Tue Apr 25 2006 - wrwhitehead@novell.com
|
||||
* Wed Apr 26 2006 wrwhitehead@novell.com
|
||||
- Fix communication hang (#157463).
|
||||
- The iscsi-tcp_data_ready callback needs to empty out the
|
||||
tcp receive queue rather than just rely on the callback to
|
||||
occur for every message in the receive queue.
|
||||
* Fri Apr 21 2006 - hare@suse.de
|
||||
* Fri Apr 21 2006 hare@suse.de
|
||||
- update to svn r545
|
||||
Fixes a crash with Wasabi targets (#157463).
|
||||
* Wed Mar 22 2006 - hare@suse.de
|
||||
* Wed Mar 22 2006 hare@suse.de
|
||||
- Add rcopen-iscsi link (#158230)
|
||||
- Check for active records before deletion (#149935)
|
||||
- Do not display error messages on startup if no
|
||||
records are found.
|
||||
* Fri Mar 10 2006 - hare@suse.de
|
||||
* Fri Mar 10 2006 hare@suse.de
|
||||
- Update to svn r520 (contains all local changes)
|
||||
- Add documentation for discovery types (#149936)
|
||||
* Tue Feb 28 2006 - hare@suse.de
|
||||
* Tue Feb 28 2006 hare@suse.de
|
||||
- Fixed type of portal_group_tag (#153638)
|
||||
* Tue Feb 21 2006 - hare@suse.de
|
||||
* Tue Feb 21 2006 hare@suse.de
|
||||
- Fixed open-iscsi startup script (#148982)
|
||||
* Mon Feb 20 2006 - hare@suse.de
|
||||
* Mon Feb 20 2006 hare@suse.de
|
||||
- Update to svn r495
|
||||
- Implement iSCSI boot support (FATE #140350)
|
||||
* Thu Feb 09 2006 - hare@suse.de
|
||||
* Thu Feb 09 2006 hare@suse.de
|
||||
- Update to svn r488 to match kernel revision
|
||||
(#149412).
|
||||
- Remove obsolete patches.
|
||||
* Wed Jan 25 2006 - mls@suse.de
|
||||
* Wed Jan 25 2006 mls@suse.de
|
||||
- converted neededforbuild to BuildRequires
|
||||
* Mon Jan 23 2006 - hare@suse.de
|
||||
* Mon Jan 23 2006 hare@suse.de
|
||||
- Update to svn r473
|
||||
- Enhance start script
|
||||
- Fix appearent login failures.
|
||||
* Fri Jan 20 2006 - hare@suse.de
|
||||
* Fri Jan 20 2006 hare@suse.de
|
||||
- Update to svn r471
|
||||
- Fix start script.
|
||||
* Mon Jan 16 2006 - hare@suse.de
|
||||
* Mon Jan 16 2006 hare@suse.de
|
||||
- Add Provides/Obsoletes tag.
|
||||
* Fri Jan 13 2006 - hare@suse.de
|
||||
* Fri Jan 13 2006 hare@suse.de
|
||||
- Rebasing package to open-iscsi-0.5-454
|
||||
- Update to svn r457
|
||||
* Mon Dec 19 2005 - hare@suse.de
|
||||
* Mon Dec 19 2005 hare@suse.de
|
||||
- Update to svn r446.
|
||||
* Thu Nov 03 2005 - hare@suse.de
|
||||
* Thu Nov 03 2005 hare@suse.de
|
||||
- Update to svn r436.
|
||||
* Thu Sep 08 2005 - hare@suse.de
|
||||
* Thu Sep 08 2005 hare@suse.de
|
||||
- Update to svn r408.
|
||||
(Added NOOP IN handling)
|
||||
- Removed obsolete patches
|
||||
* Mon Aug 22 2005 - hare@suse.de
|
||||
* Mon Aug 22 2005 hare@suse.de
|
||||
- Update to svn r401.
|
||||
- Fixed package to install properly.
|
||||
- Fixed init script
|
||||
- Added iscsi-iname to generate iSCSI Initiatorname.
|
||||
* Mon Aug 08 2005 - hare@suse.de
|
||||
* Mon Aug 08 2005 hare@suse.de
|
||||
- Update to svn r389.
|
||||
* Thu Jul 07 2005 - hare@suse.de
|
||||
* Thu Jul 07 2005 hare@suse.de
|
||||
- Initial version 0.3rc6-369
|
||||
|
Loading…
x
Reference in New Issue
Block a user