diff --git a/scripts/generate-kernel-patch b/scripts/generate-kernel-patch new file mode 100755 index 000000000..af4dc5a40 --- /dev/null +++ b/scripts/generate-kernel-patch @@ -0,0 +1,181 @@ +#!/bin/bash + +############################################################################ +# +# Script for converting the SCST source tree as it exists in the Subversion +# repository to a Linux kernel patch. +# +# Copyright (C) 2008 Bart Van Assche +# +# 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, version 2 +# of the License. +# +# 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. +# +############################################################################ + +######################## +# Function definitions # +######################## + +# Convert an existing patch. +# $1: path of patch to be added. +# $2: path in kernel tree of file to be patched. +function add_patch { + if [ ! -e "$1" ]; then + echo "Error: could not find $1." + exit 1 + fi + + sed -e "s:^--- [^ ]*:--- orig/$2:" -e "s:^+++ [^ ]*:+++ $2:" < "$1" +} + +# Generate a patch for a file to be added to the kernel source tree. +# $1: path of file to be added. +# $2: path in kernel tree where file should be added. +function add_file { + local a b + + if [ ! -e "$1" ]; then + echo "Error: could not find $1." + exit 1 + fi + + cat <." + exit 1 +fi + +#################### +# Patch Generation # +#################### + +kernel_version="$1" +kpatch=( \ + "scst/kernel/scst_exec_req_fifo-${kernel_version}.patch" \ + "iscsi-scst/kernel/patches/put_page_callback-${kernel_version}.patch" \ +) + +for p in "${kpatch[@]}" +do + if [ ! -e "$p" ]; then + echo "Error: kernel version ${kernel_version} is not supported by SCST." + echo "(could not find file $p)." + exit 1 + fi +done + + +# Kernel patches for other directories than drivers/scsi/scsi_tgt/. + +for p in "${kpatch[@]}" +do + cat "$p" + echo '' + echo '' +done + +add_patch "scst/kernel/in-tree/Kconfig.scsi.Linux-${kernel_version}.patch" \ + "linux-${kernel_version}/drivers/scsi/Kconfig" + +add_patch "scst/kernel/in-tree/Makefile.scsi.Linux-${kernel_version}.patch" \ + "linux-${kernel_version}/drivers/scsi/Makefile" + + +# Directory include/scsi_tgt/ + +for f in scst/include/*h +do + add_file "${f}" "linux-${kernel_version}/include/scsi_tgt/${f#scst/include/}" +done + + +# Directory drivers/scsi/scsi_tgt/ + +add_file "scst/kernel/in-tree/Kconfig.scsi_tgt" \ + "drivers/scsi/scsi_tgt/Kconfig" +add_file "scst/kernel/in-tree/Makefile.scsi_tgt" \ + "drivers/scsi/scsi_tgt/Makefile" + + +for f in scst/src/*[ch] +do + add_file ${f} linux-${kernel_version}/drivers/scsi/scsi_tgt/${f#scst/src/} + echo '' + echo '' +done + + +# Directory drivers/scsi/scsi_tgt/dev_handlers/ + +add_file "scst/kernel/in-tree/Makefile.dev_handlers" \ + "linux-${kernel_version}/drivers/scsi/scsi_tgt/dev_handlers/Makefile" + +for f in scst/src/dev_handlers/*.[ch] +do + add_file ${f} linux-${kernel_version}/drivers/scsi/scsi_tgt/dev_handlers/${f#scst/src/dev_handlers/} + echo '' + echo '' +done + + +# Directory drivers/infiniband/ulp/srpt/ + +cat <<'EOF' +diff -uprN orig/linux-2.6.24/drivers/infiniband/Kconfig linux-2.6.24/drivers/infiniband/Kconfig +--- orig/linux-2.6.24/drivers/infiniband/Kconfig 2008-01-24 23:58:37.000000000 +0100 ++++ linux-2.6.24/drivers/infiniband/Kconfig 2008-05-09 13:55:27.000000000 +0200 +@@ -51,6 +51,8 @@ + + source "drivers/infiniband/ulp/srp/Kconfig" + ++source "drivers/infiniband/ulp/srpt/Kconfig" ++ + source "drivers/infiniband/ulp/iser/Kconfig" + + endif # INFINIBAND +diff -uprN orig/linux-2.6.24/drivers/infiniband/Makefile linux-2.6.24/drivers/infiniband/Makefile +--- orig/linux-2.6.24/drivers/infiniband/Makefile 2008-01-24 23:58:37.000000000 +0100 ++++ linux-2.6.24/drivers/infiniband/Makefile 2008-05-09 13:57:00.000000000 +0200 +@@ -7,4 +7,5 @@ + obj-$(CONFIG_MLX4_INFINIBAND) += hw/mlx4/ + obj-$(CONFIG_INFINIBAND_IPOIB) += ulp/ipoib/ + obj-$(CONFIG_INFINIBAND_SRP) += ulp/srp/ ++obj-$(CONFIG_INFINIBAND_SRPT) += ulp/srpt/ + obj-$(CONFIG_INFINIBAND_ISER) += ulp/iser/ +EOF + +add_file "srpt/src/Kconfig" "drivers/infiniband/ulp/srpt/Kconfig" + +add_file "srpt/src/Makefile.in_kernel" "drivers/infiniband/ulp/srpt/Makefile" + +for f in srpt/src/*[ch] +do + add_file ${f} linux-${kernel_version}/drivers/infiniband/ulp/srpt/${f#srpt/src/} + echo '' + echo '' +done diff --git a/scst/kernel/in-tree/Kconfig.scsi.Linux-2.6.24.patch b/scst/kernel/in-tree/Kconfig.scsi.Linux-2.6.24.patch new file mode 100644 index 000000000..0a3fee391 --- /dev/null +++ b/scst/kernel/in-tree/Kconfig.scsi.Linux-2.6.24.patch @@ -0,0 +1,11 @@ +--- orig/linux-2.6.24/drivers/scsi/Kconfig 2008-01-24 23:58:37.000000000 +0100 ++++ linux-2.6.24/drivers/scsi/Kconfig 2008-05-09 13:25:39.000000000 +0200 +@@ -1351,6 +1351,8 @@ config SCSI_QLOGICPTI + source "drivers/scsi/qla2xxx/Kconfig" + source "drivers/scsi/qla4xxx/Kconfig" + ++source "drivers/scsi/scsi_tgt/Kconfig" ++ + config SCSI_LPFC + tristate "Emulex LightPulse Fibre Channel Support" + depends on PCI && SCSI diff --git a/scst/kernel/in-tree/Makefile.dev_handlers b/scst/kernel/in-tree/Makefile.dev_handlers new file mode 100644 index 000000000..cac49179b --- /dev/null +++ b/scst/kernel/in-tree/Makefile.dev_handlers @@ -0,0 +1,14 @@ +EXTRA_CFLAGS += -Iinclude/scsi_tgt -Wextra -Wno-unused-parameter + +obj-m := scst_cdrom.o scst_changer.o scst_disk.o scst_modisk.o scst_tape.o \ + scst_vdisk.o scst_raid.o scst_processor.o scst_user.o + +obj-$(CONFIG_SCSI_TARGET_DISK) += scst_disk.o +obj-$(CONFIG_SCSI_TARGET_TAPE) += scst_tape.o +obj-$(CONFIG_SCSI_TARGET_CDROM) += scst_cdrom.o +obj-$(CONFIG_SCSI_TARGET_MODISK) += scst_modisk.o +obj-$(CONFIG_SCSI_TARGET_CHANGER) += scst_changer.o +obj-$(CONFIG_SCSI_TARGET_RAID) += scst_raid.o +obj-$(CONFIG_SCSI_TARGET_PROCESSOR) += scst_processor.o +obj-$(CONFIG_SCSI_TARGET_VDISK) += scst_vdisk.o +obj-$(CONFIG_SCSI_TARGET_USER) += scst_user.o diff --git a/scst/kernel/in-tree/Makefile.scsi.Linux-2.6.24.patch b/scst/kernel/in-tree/Makefile.scsi.Linux-2.6.24.patch new file mode 100644 index 000000000..6f39946d8 --- /dev/null +++ b/scst/kernel/in-tree/Makefile.scsi.Linux-2.6.24.patch @@ -0,0 +1,11 @@ +diff -uprN orig/linux-2.6.24/drivers/scsi/Makefile linux-2.6.24/drivers/scsi/Makefile +--- orig/linux-2.6.24/drivers/scsi/Makefile 2008-01-24 23:58:37.000000000 +0100 ++++ linux-2.6.24/drivers/scsi/Makefile 2008-05-09 13:05:36.000000000 +0200 +@@ -88,6 +88,7 @@ obj-$(CONFIG_PCMCIA_QLOGIC) += qlogicfas + obj-$(CONFIG_SCSI_QLOGIC_1280) += qla1280.o + obj-$(CONFIG_SCSI_QLA_FC) += qla2xxx/ + obj-$(CONFIG_SCSI_QLA_ISCSI) += qla4xxx/ ++obj-$(CONFIG_SCSI_TARGET) += scsi_tgt/ + obj-$(CONFIG_SCSI_LPFC) += lpfc/ + obj-$(CONFIG_SCSI_PAS16) += pas16.o + obj-$(CONFIG_SCSI_SEAGATE) += seagate.o diff --git a/scst/kernel/in-tree/Makefile.scsi_tgt b/scst/kernel/in-tree/Makefile.scsi_tgt index dc45c29f9..6ec64e291 100644 --- a/scst/kernel/in-tree/Makefile.scsi_tgt +++ b/scst/kernel/in-tree/Makefile.scsi_tgt @@ -1,19 +1,11 @@ +EXTRA_CFLAGS += -Iinclude/scsi_tgt -Wextra -Wno-unused-parameter -EXTRA_CFLAGS += -Iinclude/scsi +scst-y += scst_main.o +scst-y += scst_targ.o +scst-y += scst_lib.o +scst-y += scst_proc.o +scst-y += scst_mem.o +scst-y += scst_debug.o -scsi_tgt-y += scst.o -scsi_tgt-y += scst_targ.o -scsi_tgt-y += scst_lib.o -scsi_tgt-y += scst_proc.o -scsi_tgt-y += scst_mem.o +obj-$(CONFIG_SCSI_TARGET) += scst.o dev_handlers/ -obj-$(CONFIG_SCSI_TARGET) += scsi_tgt.o -obj-$(CONFIG_SCSI_TARGET_DISK) += scst_disk.o -obj-$(CONFIG_SCSI_TARGET_TAPE) += scst_tape.o -obj-$(CONFIG_SCSI_TARGET_CDROM) += scst_cdrom.o -obj-$(CONFIG_SCSI_TARGET_MODISK) += scst_modisk.o -obj-$(CONFIG_SCSI_TARGET_CHANGER) += scst_changer.o -obj-$(CONFIG_SCSI_TARGET_RAID) += scst_raid.o -obj-$(CONFIG_SCSI_TARGET_PROCESSOR) += scst_processor.o -obj-$(CONFIG_SCSI_TARGET_VDISK) += scst_vdisk.o -obj-$(CONFIG_SCSI_TARGET_USER) += scst_user.o diff --git a/srpt/src/Makefile.in_kernel b/srpt/src/Makefile.in_kernel index 34bdc5bd0..597f1c525 100644 --- a/srpt/src/Makefile.in_kernel +++ b/srpt/src/Makefile.in_kernel @@ -1,4 +1,4 @@ EXTRA_CFLAGS += -Idrivers/infiniband/include -EXTRA_CFLAGS += -I/usr/local/include/scst +EXTRA_CFLAGS += -Iinclude/scsi_tgt obj-$(CONFIG_INFINIBAND_SRPT) += ib_srpt.o