OBS User unknown 2008-04-15 13:27:22 +00:00 committed by Git OBS Bridge
parent e03df61366
commit 422bfe39c4
25 changed files with 19500 additions and 1962 deletions

View File

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

File diff suppressed because it is too large Load Diff

View 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
+

View 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);
+}

View File

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

View 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
View 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;

View 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
;;

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

View 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'},

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

View 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

View 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);

File diff suppressed because it is too large Load Diff

View 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),

View 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);
}

View 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);

View File

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

View 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
View 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);

View File

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

View File

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