summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README8
-rw-r--r--kernel/Makefile37
-rw-r--r--kernel/backward-compile-2.6.11.patch166
-rw-r--r--kernel/backward-compile-2.6.12.patch99
4 files changed, 35 insertions, 275 deletions
diff --git a/README b/README
index e0388e8..735c52c 100644
--- a/README
+++ b/README
@@ -47,8 +47,6 @@ open-iscsi@googlegroups.com
For the most recent list of features please refer to:
http://www.open-iscsi.org/cgi-bin/wiki.pl/Roadmap
-
-
2. Introduction
===============
@@ -75,8 +73,10 @@ iscsid, and a management utility iscsiadm.
===============
As of today, the Open-iSCSI Initiator requires a host running the
-Linux operating system with kernel version 2.6.11, or later. You need to
-enable "Cryptographic API" under "Cryptographic options" in the
+Linux operating system with kernel version 2.6.11, or later. See
+http://www.open-iscsi.org/cgi-bin/wiki.pl/Supported_Kernels
+for a more information about which kernels Open-iSCSI supports.
+You need to enable "Cryptographic API" under "Cryptographic options" in the
kernel config. You also need to enable "CRC32c CRC algorithm" if
you use header or data digests. They are the kernel options,
CONFIG_CRYPTO and CONFIG_CRYPTO_CRC32C, respectively.
diff --git a/kernel/Makefile b/kernel/Makefile
index 69938b3..03a9e84 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -20,24 +20,49 @@ EXTRA_CFLAGS += -DNETLINK_ISCSI=12
endif
endif
+#TODO: learn how to program Makefiles!
all:
ifeq ($(KVER),11)
- @if cat scsi_transport_iscsi.c | \
- grep transport_container_register > /dev/null; then \
+ @if ! cat scsi_transport_iscsi.c | \
+ grep iscsi_compat > /dev/null; then \
echo "kernel check... FAILED"; \
- echo "Please apply backward-compile-2.6.11.patch first!"; exit 1; fi
+ echo "Apply the 2.6.11-compat.patch first!"; exit 1; fi
@echo "kernel check... OK"
else
ifeq ($(KVER),12)
- @if cat scsi_transport_iscsi.c | \
- grep "__nlmsg_put.*, 0);" > /dev/null; then \
+ @if ! cat scsi_transport_iscsi.c | \
+ grep iscsi_compat > /dev/null; then \
echo "kernel check... FAILED"; \
- echo "Please apply backward-compile-2.6.12.patch first!"; exit 1; fi
+ echo "Apply the 2.6.12-and-2.6.13-compat.patch first!"; exit 1; fi
+ @echo "kernel check... OK"
+else
+ifeq ($(KVER),13)
+ @if ! cat scsi_transport_iscsi.c | \
+ grep iscsi_compat > /dev/null; then \
+ echo "kernel check... FAILED"; \
+ echo "Apply the 2.6.12-and-2.6.13-compat.patch first!"; exit 1; fi
+ @echo "kernel check... OK"
+else
+ifeq ($(KVER),14)
+ @if ! cat scsi_transport_iscsi.c | \
+ grep iscsi_compat > /dev/null; then \
+ echo "kernel check... FAILED"; \
+ echo "Apply the 2.6.14-and-2.6.15-compat.patch first!"; exit 1; fi
+ @echo "kernel check... OK"
+else
+ifeq ($(KVER),15)
+ @if ! cat scsi_transport_iscsi.c | \
+ grep iscsi_compat > /dev/null; then \
+ echo "kernel check... FAILED"; \
+ echo "Apply the 2.6.14-and-2.6.15-compat.patch first!"; exit 1; fi
@echo "kernel check... OK"
else
@echo "kernel check... OK"
endif
endif
+endif
+endif
+endif
make -C $(KSRC) SUBDIRS=`pwd` $(KARCH)
clean:
diff --git a/kernel/backward-compile-2.6.11.patch b/kernel/backward-compile-2.6.11.patch
deleted file mode 100644
index b539af7..0000000
--- a/kernel/backward-compile-2.6.11.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-Index: iscsi_tcp.c
-===================================================================
---- iscsi_tcp.c (revision 371)
-+++ iscsi_tcp.c (working copy)
-@@ -1567,7 +1567,7 @@
- ctask->conn = conn;
- ctask->hdr.opcode = ISCSI_OP_SCSI_CMD;
- ctask->hdr.flags = ISCSI_ATTR_SIMPLE;
-- int_to_scsilun(sc->device->lun, (struct scsi_lun *)ctask->hdr.lun);
-+ ctask->hdr.lun[1] = sc->device->lun;
- ctask->hdr.itt = ctask->itt | (conn->id << CID_SHIFT) |
- (session->age << AGE_SHIFT);
- ctask->hdr.data_length = cpu_to_be32(sc->request_bufflen);
-@@ -2938,14 +2938,17 @@
- struct iscsi_conn *conn = ctask->conn;
- struct iscsi_session *session = conn->session;
-
-+ spin_unlock_irq(session->host->host_lock);
- spin_lock_bh(&session->lock);
- if (session->state == ISCSI_STATE_TERMINATE) {
- debug_scsi("failing host reset: session terminated "
- "[CID %d age %d]", conn->id, session->age);
- spin_unlock_bh(&session->lock);
-+ spin_lock_irq(session->host->host_lock);
- return FAILED;
- }
- spin_unlock_bh(&session->lock);
-+ spin_lock_irq(session->host->host_lock);
-
- debug_scsi("failing connection CID %d due to SCSI host reset "
- "[itt 0x%x age %d]", conn->id, ctask->itt,
-@@ -2983,6 +2986,7 @@
- struct iscsi_conn *conn = ctask->conn;
- struct iscsi_session *session = conn->session;
-
-+ spin_unlock_irq(session->host->host_lock);
- conn->eh_abort_cnt++;
- debug_scsi("aborting [sc %lx itt 0x%x]\n", (long)sc, ctask->itt);
-
-@@ -3154,6 +3158,7 @@
- write_unlock_bh(&sk->sk_callback_lock);
- }
- up(&conn->xmitsema);
-+ spin_lock_irq(session->host->host_lock);
- return rc;
- }
-
-Index: scsi_transport_iscsi.c
-===================================================================
---- scsi_transport_iscsi.c (revision 371)
-+++ scsi_transport_iscsi.c (working copy)
-@@ -58,9 +58,9 @@
- /*
- * We do not have any private or other attrs.
- */
-- struct transport_container conn_cont;
-+ struct attribute_container conn_cont;
- struct class_device_attribute *conn_attrs[ISCSI_CONN_ATTRS + 1];
-- struct transport_container session_cont;
-+ struct attribute_container session_cont;
- struct class_device_attribute *session_attrs[ISCSI_SESSION_ATTRS + 1];
- };
-
-@@ -354,7 +354,7 @@
- return -ENOMEM;
- }
-
-- nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)), 0);
-+ nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)));
- ev = NLMSG_DATA(nlh);
- memset(ev, 0, sizeof(*ev));
- ev->transport_handle = iscsi_handle(conn->transport);
-@@ -390,7 +390,7 @@
- return;
- }
-
-- nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)), 0);
-+ nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)));
- ev = NLMSG_DATA(nlh);
- ev->transport_handle = iscsi_handle(conn->transport);
- ev->type = ISCSI_KEVENT_CONN_ERROR;
-@@ -426,7 +426,7 @@
- */
- BUG_ON(!skb);
-
-- nlh = __nlmsg_put(skb, pid, seq, t, (len - sizeof(*nlh)), 0);
-+ nlh = __nlmsg_put(skb, pid, seq, t, (len - sizeof(*nlh)));
- nlh->nlmsg_flags = flags;
- memcpy(NLMSG_DATA(nlh), payload, size);
- return iscsi_unicast_skb(&z_reply, skb);
-@@ -762,7 +762,7 @@
- }
-
- nlhstat = __nlmsg_put(skbstat, daemon_pid, 0, 0,
-- (len - sizeof(*nlhstat)), 0);
-+ (len - sizeof(*nlhstat)));
- evstat = NLMSG_DATA(nlhstat);
- memset(evstat, 0, sizeof(*evstat));
- evstat->transport_handle = iscsi_handle(conn->transport);
-@@ -1022,10 +1022,10 @@
- return 0;
-
- priv = to_iscsi_internal(shost->transportt);
-- if (priv->session_cont.ac.class != &iscsi_session_class.class)
-+ if (priv->session_cont.class != &iscsi_session_class.class)
- return 0;
-
-- return &priv->session_cont.ac == cont;
-+ return &priv->session_cont == cont;
- }
-
- static int iscsi_is_conn_dev(const struct device *dev)
-@@ -1049,10 +1049,10 @@
- return 0;
-
- priv = to_iscsi_internal(shost->transportt);
-- if (priv->conn_cont.ac.class != &iscsi_connection_class.class)
-+ if (priv->conn_cont.class != &iscsi_connection_class.class)
- return 0;
-
-- return &priv->conn_cont.ac == cont;
-+ return &priv->conn_cont == cont;
- }
-
- int iscsi_register_transport(struct iscsi_transport *tt)
-@@ -1100,10 +1100,10 @@
- }
-
- /* connection parameters */
-- priv->conn_cont.ac.attrs = &priv->conn_attrs[0];
-- priv->conn_cont.ac.class = &iscsi_connection_class.class;
-- priv->conn_cont.ac.match = iscsi_conn_match;
-- transport_container_register(&priv->conn_cont);
-+ priv->conn_cont.attrs = &priv->conn_attrs[0];
-+ priv->conn_cont.class = &iscsi_connection_class.class;
-+ priv->conn_cont.match = iscsi_conn_match;
-+ attribute_container_register(&priv->conn_cont);
-
- SETUP_CONN_RD_ATTR(max_recv_dlength, ISCSI_PARAM_MAX_RECV_DLENGTH);
- SETUP_CONN_RD_ATTR(max_xmit_dlength, ISCSI_PARAM_MAX_XMIT_DLENGTH);
-@@ -1117,10 +1117,10 @@
- count = 0;
-
- /* session parameters */
-- priv->session_cont.ac.attrs = &priv->session_attrs[0];
-- priv->session_cont.ac.class = &iscsi_session_class.class;
-- priv->session_cont.ac.match = iscsi_session_match;
-- transport_container_register(&priv->session_cont);
-+ priv->session_cont.attrs = &priv->session_attrs[0];
-+ priv->session_cont.class = &iscsi_session_class.class;
-+ priv->session_cont.match = iscsi_session_match;
-+ attribute_container_register(&priv->session_cont);
-
- SETUP_SESSION_RD_ATTR(initial_r2t, ISCSI_PARAM_INITIAL_R2T_EN);
- SETUP_SESSION_RD_ATTR(max_outstanding_r2t, ISCSI_PARAM_MAX_R2T);
-@@ -1173,8 +1173,8 @@
- list_del(&priv->list);
- spin_unlock_irqrestore(&iscsi_transport_lock, flags);
-
-- transport_container_unregister(&priv->conn_cont);
-- transport_container_unregister(&priv->session_cont);
-+ attribute_container_unregister(&priv->conn_cont);
-+ attribute_container_unregister(&priv->session_cont);
-
- sysfs_remove_group(&priv->cdev.kobj, &iscsi_transport_group);
- class_device_unregister(&priv->cdev);
diff --git a/kernel/backward-compile-2.6.12.patch b/kernel/backward-compile-2.6.12.patch
deleted file mode 100644
index a14dd6a..0000000
--- a/kernel/backward-compile-2.6.12.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-Index: iscsi_tcp.c
-===================================================================
---- iscsi_tcp.c (revision 376)
-+++ iscsi_tcp.c (working copy)
-@@ -1398,7 +1398,7 @@
- ctask->conn = conn;
- ctask->hdr.opcode = ISCSI_OP_SCSI_CMD;
- ctask->hdr.flags = ISCSI_ATTR_SIMPLE;
-- int_to_scsilun(sc->device->lun, (struct scsi_lun *)ctask->hdr.lun);
-+ ctask->hdr.lun[1] = sc->device->lun;
- ctask->hdr.itt = ctask->itt | (conn->id << CID_SHIFT) |
- (session->age << AGE_SHIFT);
- ctask->hdr.data_length = cpu_to_be32(sc->request_bufflen);
-@@ -2540,14 +2540,17 @@
- struct iscsi_conn *conn = ctask->conn;
- struct iscsi_session *session = conn->session;
-
-+ spin_unlock_irq(session->host->host_lock);
- spin_lock_bh(&session->lock);
- if (session->state == ISCSI_STATE_TERMINATE) {
- debug_scsi("failing host reset: session terminated "
- "[CID %d age %d]", conn->id, session->age);
- spin_unlock_bh(&session->lock);
-+ spin_lock_irq(session->host->host_lock);
- return FAILED;
- }
- spin_unlock_bh(&session->lock);
-+ spin_lock_irq(session->host->host_lock);
-
- debug_scsi("failing connection CID %d due to SCSI host reset "
- "[itt 0x%x age %d]", conn->id, ctask->itt,
-@@ -2585,6 +2588,7 @@
- struct iscsi_conn *conn = ctask->conn;
- struct iscsi_session *session = conn->session;
-
-+ spin_unlock_irq(session->host->host_lock);
- conn->eh_abort_cnt++;
- debug_scsi("aborting [sc %lx itt 0x%x]\n", (long)sc, ctask->itt);
-
-@@ -2756,6 +2760,7 @@
- write_unlock_bh(&sk->sk_callback_lock);
- }
- up(&conn->xmitsema);
-+ spin_lock_irq(session->host->host_lock);
- return rc;
- }
-
-Index: scsi_transport_iscsi.c
-===================================================================
---- scsi_transport_iscsi.c (revision 376)
-+++ scsi_transport_iscsi.c (working copy)
-@@ -354,7 +354,7 @@
- return -ENOMEM;
- }
-
-- nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)), 0);
-+ nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)));
- ev = NLMSG_DATA(nlh);
- memset(ev, 0, sizeof(*ev));
- ev->transport_handle = iscsi_handle(conn->transport);
-@@ -390,7 +390,7 @@
- return;
- }
-
-- nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)), 0);
-+ nlh = __nlmsg_put(skb, daemon_pid, 0, 0, (len - sizeof(*nlh)));
- ev = NLMSG_DATA(nlh);
- ev->transport_handle = iscsi_handle(conn->transport);
- ev->type = ISCSI_KEVENT_CONN_ERROR;
-@@ -426,7 +426,7 @@
- */
- BUG_ON(!skb);
-
-- nlh = __nlmsg_put(skb, pid, seq, t, (len - sizeof(*nlh)), 0);
-+ nlh = __nlmsg_put(skb, pid, seq, t, (len - sizeof(*nlh)));
- nlh->nlmsg_flags = flags;
- memcpy(NLMSG_DATA(nlh), payload, size);
- return iscsi_unicast_skb(&z_reply, skb);
-@@ -762,7 +762,7 @@
- }
-
- nlhstat = __nlmsg_put(skbstat, daemon_pid, 0, 0,
-- (len - sizeof(*nlhstat)), 0);
-+ (len - sizeof(*nlhstat)));
- evstat = NLMSG_DATA(nlhstat);
- memset(evstat, 0, sizeof(*evstat));
- evstat->transport_handle = iscsi_handle(conn->transport);
-@@ -1234,8 +1234,8 @@
- if (err)
- goto unregister_session_class;
-
-- nls = netlink_kernel_create(NETLINK_ISCSI, 1, iscsi_if_rx,
-- THIS_MODULE);
-+ nls = netlink_kernel_create(NETLINK_ISCSI, iscsi_if_rx);
-+
- if (!nls) {
- err = -ENOBUFS;
- goto unregister_notifier;
-