mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-14 09:11:27 +00:00
I haven't been able to find any sign of this file being used since the initial commit, so remove this dead code.
644 lines
18 KiB
Bash
Executable File
644 lines
18 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
############################################################################
|
|
#
|
|
# Script for converting the SCST source tree as it exists in the Subversion
|
|
# repository to a Linux kernel patch.
|
|
#
|
|
# Copyright (C) 2008-2020 Bart Van Assche <bvanassche@acm.org>
|
|
#
|
|
# 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 #
|
|
########################
|
|
|
|
# shellcheck source=./kernel-functions
|
|
source "$(dirname "$0")/kernel-functions"
|
|
|
|
function usage {
|
|
echo "Usage: $0 [-d] [-h] [-n] [-p <dir>] [-s] [-u] <kernel version>"
|
|
echo "where: "
|
|
echo " -d - enable patch specialization debugging"
|
|
echo " -h - show this text"
|
|
echo " -n - do not delete code disabled via preprocessor statements"
|
|
echo " -p - generate multiple patches instead of one big patch into"\
|
|
"the specified directory."
|
|
echo " -s - disable patch specialization."
|
|
echo " -u - enables #define GENERATING_UPSTREAM_PATCH."
|
|
}
|
|
|
|
# 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." >&2
|
|
exit 1
|
|
fi
|
|
|
|
sed -e "s:^--- [^ ]*:--- linux-${kver}/$2:" \
|
|
-e "s:^+++ [^ ]*:+++ linux-${kver}/$2:" \
|
|
< "$1"
|
|
}
|
|
|
|
# Generate a patch for a file to be added to the kernel source tree, and strip
|
|
# trailing whitespace from C source files while converting the file to patch
|
|
# format.
|
|
# $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." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Only include files that were not generated by the build process
|
|
# -- skip *.mod.c.
|
|
if [ "$1" = "${1%.mod.c}" ] && [ "$1" ]; then
|
|
cat <<EOF
|
|
diff -uprN linux-${kver}/$2 linux-${kver}/$2
|
|
--- linux-${kver}/$2
|
|
+++ linux-${kver}/$2
|
|
@@ -0,0 +1,$(wc -l "$1" | { read -r a b; echo "$a"; echo "$b" >/dev/null; }) @@
|
|
EOF
|
|
# Insert a '+'-sign at the start of each line.
|
|
sed -e 's/^/+/' < "$1" | \
|
|
if [ "${replace_sbug_by_bug}" = "true" ]; then
|
|
sed -e 's/sBUG(\([^)]*\)/BUG(\1/g' -e 's/sBUG_ON(\([^)]*\)/BUG_ON(\1/g'
|
|
else
|
|
cat
|
|
fi \
|
|
| \
|
|
if [ "${2%.[ch]}" != "$2" ]; then
|
|
# Make sure that labels (goto-targets) are left-aligned.
|
|
sed -e 's/^ \([^ ]*:\)$/\1/'
|
|
else
|
|
cat
|
|
fi
|
|
fi
|
|
}
|
|
|
|
function add_empty_file {
|
|
cat <<EOF
|
|
diff -uprN linux-${kver}/$1 linux-${kver}/$1
|
|
--- linux-${kver}/$1
|
|
+++ linux-${kver}/$1
|
|
@@ -0,0 +1,1 @@
|
|
+
|
|
EOF
|
|
}
|
|
|
|
# Run the script specialize_patch with appropriate options on the patch
|
|
# passed via stdin and send the specialized patch to stdout.
|
|
function specialize_patch {
|
|
local ao
|
|
set -- ${1//^/ }
|
|
local kver=$1
|
|
local distro=$2
|
|
local release=$3
|
|
set -- ${release//./ }
|
|
local releasevermajor="$1"
|
|
local releaseverminor="$2"
|
|
case "$distro" in
|
|
CentOS|AlmaLinux)
|
|
if [ -n "$releasevermajor" ]; then
|
|
ao=(
|
|
-v "RHEL_MAJOR=$releasevermajor"
|
|
-v "RHEL_MINOR=$releaseverminor"
|
|
-v "RHEL_RELEASE_CODE=$((releasevermajor * 256 +
|
|
releaseverminor))"
|
|
)
|
|
fi
|
|
;;
|
|
UEK)
|
|
ao=(-v UEK_KABI_RENAME=1 -v UEK_RELEASE=${releasevermajor})
|
|
;;
|
|
esac
|
|
local kver3
|
|
set -- ${kver//[.-]/ }
|
|
if [ -n "$3" ]; then
|
|
kver3=$1.$2.$3
|
|
else
|
|
kver3=$1.$2
|
|
fi
|
|
if [ "${enable_specialize}" = "true" ]; then
|
|
if [ "${generating_upstream_patch}" = "true" ]; then
|
|
scripts/filter-trace-entry-exit
|
|
else
|
|
cat
|
|
fi |
|
|
"$(dirname "$0")/specialize-patch" \
|
|
"${specialize_patch_options[@]}" \
|
|
-v kernel_version="${kver3}" \
|
|
-v SCST_IO_CONTEXT="${scst_io_context}" "${ao[@]}"
|
|
else
|
|
cat
|
|
fi
|
|
}
|
|
|
|
# Read a patch from stdin, specialize it for kernel version ${full_kver}
|
|
# and write the output either to stdout or to the file $1 (if not empty),
|
|
# depending on the value of the variable ${multiple_patches}.
|
|
function process_patch {
|
|
local tmppatch
|
|
if [ "${multiple_patches}" = "true" ]; then
|
|
if [ "$1" != "" ]; then
|
|
if [ -e "${patchdir}/$1" ]; then
|
|
echo "Warning: overwriting ${patchdir}/$1"
|
|
fi
|
|
tmppatch="$(/bin/mktemp)"
|
|
(
|
|
specialize_patch "${full_kver}"
|
|
) >"${tmppatch}"
|
|
touch "${tmppatch}"
|
|
{
|
|
if [ -e /usr/bin/diffstat ]; then
|
|
awk 'BEGIN{h=1}/^diff/{h=0}/^---/{h=0}h!=0{print}' < "${tmppatch}"
|
|
echo "---"
|
|
diffstat "${tmppatch}"
|
|
echo ""
|
|
awk 'BEGIN{h=1}/^diff/{h=0}/^---/{h=0}h==0{print}' < "${tmppatch}"
|
|
fi
|
|
} \
|
|
> "${patchdir}/$(basename "$1")"
|
|
rm -f "${tmppatch}"
|
|
else
|
|
# echo "Discarded $(wc -l) lines."
|
|
true
|
|
fi
|
|
else
|
|
specialize_patch "${full_kver}"
|
|
fi
|
|
}
|
|
|
|
# Returns 0 (true) if SCST core file "$1" should be added in a separate patch,
|
|
# and 1 (false) if not.
|
|
function in_separate_patch {
|
|
echo "${source_files_in_separate_patch}" | grep -qE "^$1 | $1 | $1\$|^$1\$"
|
|
}
|
|
|
|
|
|
#########################
|
|
# Argument verification #
|
|
#########################
|
|
|
|
debug_specialize="false"
|
|
enable_specialize="true"
|
|
generating_upstream_patch="false"
|
|
multiple_patches="false"
|
|
patchdir=""
|
|
replace_sbug_by_bug="true"
|
|
specialize_patch_options=(-v "delete_disabled_code=1")
|
|
srpt="true"
|
|
|
|
if [ ! -e scst ] || [ ! -e iscsi-scst ] || [ ! -e srpt ] ||
|
|
[ ! -e scst_local ]; then
|
|
echo "Please run this script from inside the SCST subversion source tree."
|
|
exit 1
|
|
fi
|
|
|
|
# shellcheck disable=SC2046
|
|
set -- $(/usr/bin/getopt dhlmnp:su "$@")
|
|
while [ "$1" != "${1#-}" ]
|
|
do
|
|
case "$1" in
|
|
'-d') debug_specialize="true"; shift;;
|
|
'-h') usage; exit 1;;
|
|
'-l') shift;;
|
|
'-n') specialize_patch_options=(-v "blank_deleted_code=1")
|
|
shift
|
|
;;
|
|
'-p') multiple_patches="true"; patchdir="$2"; shift; shift;;
|
|
'-s') enable_specialize="false"; shift;;
|
|
'-u') generating_upstream_patch="true"; shift;;
|
|
'--') shift;;
|
|
*) usage; exit 1;;
|
|
esac
|
|
done
|
|
|
|
if [ $# != 1 ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
# Strip patch level from the kernel version number.
|
|
full_kver="$1"
|
|
kver="$(kernel_version "$1")"
|
|
|
|
# Include fcst in the patch for kernel versions 2.6.33 and later.
|
|
if kernel_version_le "2.6.37" "${kver}"; then
|
|
include_fcst="true"
|
|
else
|
|
include_fcst="false"
|
|
fi
|
|
|
|
# See also commit 89d9a567952b ("[SCSI] add support for per-host cmd pools";
|
|
# v3.15).
|
|
if kernel_version_lt "$kver" 3.18; then
|
|
qla2x00t="true"
|
|
qla2x00t_32gbit="false"
|
|
else
|
|
qla2x00t="false"
|
|
qla2x00t_32gbit="true"
|
|
fi
|
|
|
|
if [ -e "scst/kernel/in-tree/Makefile.scst-${kver}" ]; then
|
|
scst_makefile="Makefile.scst-${kver}"
|
|
else
|
|
scst_makefile="Makefile.scst"
|
|
fi
|
|
|
|
# Make sure that for kernel 2.6.26 and later the line
|
|
# "#define CONFIG_SCST_PROC" is removed from scst/include/scst.h.
|
|
if grep -qw scst_sysfs scst/kernel/in-tree/${scst_makefile} \
|
|
|| [ "${generating_upstream_patch}" = "true" ];
|
|
then
|
|
specialize_patch_options+=(-v "config_scst_proc_undefined=1")
|
|
else
|
|
include_proc_impl="true"
|
|
fi
|
|
if [ "${debug_specialize}" = "true" ]; then
|
|
specialize_patch_options+=(-v "debug=1")
|
|
fi
|
|
if [ "${generating_upstream_patch}" = "true" ]; then
|
|
specialize_patch_options+=(-v "generating_upstream_patch_defined=1"
|
|
-v "config_tcp_zero_copy_transfer_completion_notification_undefined=1")
|
|
fi
|
|
|
|
if [ "${multiple_patches}" = "true" ]; then
|
|
if [ -e "${patchdir}" ]; then
|
|
echo "Patch output directory ${patchdir} already exists."
|
|
fi
|
|
mkdir -p "${patchdir}"
|
|
if [ ! -d "${patchdir}" ]; then
|
|
echo "Error: ${patchdir} is not a directory."
|
|
fi
|
|
fi
|
|
|
|
|
|
####################
|
|
# Patch Generation #
|
|
####################
|
|
|
|
for f in fcst/linux-patches/series-"${kver}"*
|
|
do
|
|
if [ -e "$f" ]; then
|
|
fcst_patch_series="$f"
|
|
fi
|
|
done
|
|
|
|
# General kernel patches.
|
|
|
|
scst_io_context=0
|
|
|
|
scst_03_public_headers="scst/include/scst.h scst/include/scst_const.h \
|
|
scst/include/scst_event.h scst/include/backport.h"
|
|
scst_04_main="scst/src/scst_main.c scst/src/scst_priv.h \
|
|
scst/src/scst_copy_mgr.c scst/src/scst_dlm.c scst/src/scst_dlm.h \
|
|
scst/src/scst_event.c scst/src/scst_no_dlm.c"
|
|
scst_05_targ="scst/src/scst_targ.c scst/src/scst_local_cmd.c \
|
|
scst/src/scst_local_cmd.h"
|
|
scst_06_lib="scst/src/scst_lib.c"
|
|
scst_07_pres="scst/src/scst_pres.h scst/src/scst_pres.c"
|
|
scst_08_sysfs="scst/src/scst_sysfs.c"
|
|
scst_09_debug="scst/include/scst_debug.h scst/src/scst_debug.c"
|
|
scst_proc="scst/src/scst_proc.c"
|
|
scst_10_sgv="scst/include/scst_sgv.h scst/src/scst_mem.h scst/src/scst_mem.c doc/scst_pg.sgml"
|
|
scst_user="scst/include/scst_user.h scst/src/dev_handlers/scst_user.c"
|
|
scst_13_vdisk="scst/src/dev_handlers/scst_vdisk.c"
|
|
scst_14_tg="scst/src/scst_tg.c"
|
|
separate_patches="scst_03_public_headers scst_04_main scst_05_targ scst_06_lib scst_07_pres scst_08_sysfs scst_09_debug scst_10_sgv scst_user scst_13_vdisk scst_14_tg"
|
|
|
|
# Suppress shellcheck warnings about unused variables.
|
|
echo "$scst_03_public_headers $scst_04_main $scst_05_targ $scst_06_lib $scst_07_pres $scst_08_sysfs $scst_09_debug $scst_proc $scst_10_sgv $scst_user $scst_13_vdisk $scst_14_tg" >/dev/null
|
|
|
|
if [ "$include_proc_impl" = "true" ]; then
|
|
separate_patches+=" scst_proc"
|
|
fi
|
|
source_files_in_separate_patch=""
|
|
for s in ${separate_patches}
|
|
do
|
|
source_files_in_separate_patch+=" $(set | \
|
|
sed -n -e "s/^$s='\(.*\)'$/\1/p" -e "s/^$s=\(.*\)$/\1/p")"
|
|
done
|
|
|
|
|
|
# Directory drivers/
|
|
|
|
(
|
|
if [ -e "scst/kernel/in-tree/Kconfig.drivers.Linux-${kver}.patch" ]; then
|
|
add_patch "scst/kernel/in-tree/Kconfig.drivers.Linux-${kver}.patch" \
|
|
"drivers/Kconfig"
|
|
else
|
|
add_patch "scst/kernel/in-tree/Kconfig.drivers.Linux.patch" \
|
|
"drivers/Kconfig"
|
|
fi
|
|
|
|
if [ "${full_kver#2.6.32-}" = "${full_kver}" ] &&
|
|
[ -e "scst/kernel/in-tree/Makefile.drivers.Linux-${kver}.patch" ]; then
|
|
add_patch "scst/kernel/in-tree/Makefile.drivers.Linux-${kver}.patch"\
|
|
"drivers/Makefile"
|
|
else
|
|
add_patch "scst/kernel/in-tree/Makefile.drivers.Linux.patch"\
|
|
"drivers/Makefile"
|
|
fi
|
|
) \
|
|
| process_patch "scst_01_drivers_kbuild.diff"
|
|
|
|
|
|
# Directory drivers/scst/
|
|
|
|
(
|
|
tmpdir="/tmp/scst-$$"
|
|
mkdir -p "${tmpdir}"
|
|
|
|
tmp_Kconfig="${tmpdir}/Kconfig.scst-${kver}"
|
|
# shellcheck disable=SC2002
|
|
cat "scst/kernel/in-tree/Kconfig.scst" | \
|
|
if [ "${include_fcst}" = true ]; then
|
|
cat
|
|
else
|
|
grep -v '^source "drivers/scst/fcst/Kconfig"$'
|
|
fi >"${tmp_Kconfig}"
|
|
add_file "${tmp_Kconfig}" "drivers/scst/Kconfig"
|
|
|
|
tmp_Makefile="${tmpdir}/${scst_makefile}"
|
|
# shellcheck disable=SC2002
|
|
cat "scst/kernel/in-tree/${scst_makefile}" | \
|
|
if [ "$include_proc_impl" != "true" ]; then
|
|
grep -v 'scst_proc'
|
|
else
|
|
cat
|
|
fi | \
|
|
if [ "${include_fcst}" = true ] && [ "${kver}" != "2.6.37" ] &&
|
|
[ "${kver}" != "2.6.38" ]; then
|
|
cat
|
|
else
|
|
sed -e 's: fcst/* : :'
|
|
fi >"$tmp_Makefile"
|
|
add_file "$tmp_Makefile" "drivers/scst/Makefile"
|
|
|
|
rm -rf "${tmpdir}"
|
|
) \
|
|
| process_patch "scst_02_scst_kbuild.diff"
|
|
|
|
for s in ${separate_patches}
|
|
do
|
|
{
|
|
for f in $(eval 'echo "$'"{$s}"'"')
|
|
do
|
|
if [ "${f#scst/include}" != "${f}" ]; then
|
|
add_file "${f}" "include/scst/${f#scst/include/}"
|
|
elif [ "${f#doc}" != "${f}" ]; then
|
|
add_file "${f}" "Documentation/scst/${f#doc/}"
|
|
else
|
|
add_file "${f}" "drivers/scst/${f#scst/src/}"
|
|
fi
|
|
done
|
|
if grep -q /scst_itf_ver.h scst/src/Makefile &&
|
|
[ "$s" = "scst_03_public_headers" ]; then
|
|
tmp_itf_ver="$(mktemp /tmp/scst-itf-ver.h.XXXXXXXXXX)"
|
|
cat <<"EOF" >"$tmp_itf_ver"
|
|
/* Autogenerated, don't edit */
|
|
|
|
#define SCST_INTF_VER "SCST_INTF_VER"
|
|
#define SCST_CONST_INTF_VER "SCST_CONST_INTF_VER"
|
|
#define DEV_USER_INTF_VER "DEV_USER_INTF_VER"
|
|
EOF
|
|
add_file "$tmp_itf_ver" "include/scst/scst_itf_ver.h"
|
|
rm -f "$tmp_itf_ver"
|
|
fi
|
|
} |
|
|
process_patch "${s}.diff"
|
|
done
|
|
|
|
{
|
|
if [ -e scst/README_in-tree ]; then
|
|
add_file "scst/README_in-tree" "Documentation/scst/README.scst"
|
|
fi
|
|
add_file "scst/SysfsRules" "Documentation/scst/SysfsRules"
|
|
} | process_patch "scst_11_core_doc.diff"
|
|
|
|
|
|
# Directory drivers/scst/dev_handlers/
|
|
if [ -e "scst/kernel/in-tree/Makefile.dev_handlers-${kver}" ]
|
|
then
|
|
add_file "scst/kernel/in-tree/Makefile.dev_handlers-${kver}" \
|
|
"drivers/scst/dev_handlers/Makefile" \
|
|
| process_patch "scst_11_dev_handlers_makefile.diff"
|
|
else
|
|
add_file "scst/kernel/in-tree/Makefile.dev_handlers" \
|
|
"drivers/scst/dev_handlers/Makefile" \
|
|
| process_patch "scst_11_dev_handlers_makefile.diff"
|
|
fi
|
|
|
|
for f in scst/src/dev_handlers/*.[ch]; do
|
|
[ -e "$f" ] || continue
|
|
if ! in_separate_patch "${f}"; then
|
|
add_file "${f}" "drivers/scst/dev_handlers/${f#scst/src/dev_handlers/}"
|
|
fi
|
|
done \
|
|
| process_patch "scst_14_passthrough.diff"
|
|
|
|
|
|
# Directory drivers/scst/fcst/
|
|
|
|
if [ "${include_fcst}" = true ]; then
|
|
if [ -e "${fcst_patch_series}" ]; then
|
|
grep -v '^#' "${fcst_patch_series}" |
|
|
while read -r f; do
|
|
cat "fcst/linux-patches/${f}"
|
|
done
|
|
fi
|
|
|
|
for f in fcst/Kbuild fcst/Makefile_in-tree; do
|
|
[ -e "$f" ] && add_file "$f" "drivers/scst/fcst/Makefile"
|
|
done
|
|
|
|
add_file "fcst/Kconfig" "drivers/scst/fcst/Kconfig"
|
|
|
|
for f in fcst/*.[ch]; do
|
|
[ -e "$f" ] || continue
|
|
add_file "${f}" "drivers/scst/fcst/${f#fcst/}"
|
|
done
|
|
fi \
|
|
| process_patch "fcst.diff"
|
|
|
|
add_file "fcst/README" "Documentation/scst/README.fcst" \
|
|
| process_patch "fcst-doc.diff"
|
|
|
|
|
|
# Directory drivers/scst/iscsi-scst/
|
|
|
|
# Make sure the file iscsi-scst/iscsi_scst_itf_ver.h is up to date.
|
|
make -s -C iscsi-scst include/iscsi_scst_itf_ver.h
|
|
|
|
(
|
|
for f in iscsi-scst/include/*h; do
|
|
[ -e "$f" ] || continue
|
|
case "${f}" in
|
|
"iscsi-scst/include/iscsi_scst_itf_ver.h")
|
|
;;
|
|
"iscsi-scst/include/iscsit_transport.h")
|
|
add_file "${f}" "include/scst/${f#iscsi-scst/include/}"
|
|
;;
|
|
*)
|
|
add_file "${f}" "include/scst/${f#iscsi-scst/include/}"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
add_file "iscsi-scst/include/iscsi_scst_itf_ver.h" "include/scst/iscsi_scst_itf_ver.h"
|
|
|
|
add_file "iscsi-scst/kernel/Makefile.in-kernel" \
|
|
"drivers/scst/iscsi-scst/Makefile"
|
|
|
|
add_file "iscsi-scst/kernel/Kconfig" "drivers/scst/iscsi-scst/Kconfig"
|
|
|
|
for f in iscsi-scst/kernel/*.[ch]; do
|
|
[ -e "$f" ] || continue
|
|
add_file "${f}" "drivers/scst/iscsi-scst/${f#iscsi-scst/kernel/}"
|
|
done
|
|
|
|
for f in iscsi-scst/kernel/isert-scst/*.[ch]; do
|
|
[ -e "$f" ] || continue
|
|
add_file "${f}" "drivers/scst/iscsi-scst/isert-scst/${f#iscsi-scst/kernel/isert-scst/}"
|
|
done
|
|
add_file "iscsi-scst/kernel/isert-scst/Makefile.in-kernel" "drivers/scst/iscsi-scst/isert-scst/Makefile"
|
|
add_file "iscsi-scst/kernel/isert-scst/Kconfig" "drivers/scst/iscsi-scst/isert-scst/Kconfig"
|
|
) \
|
|
| process_patch "iscsi-scst.diff"
|
|
|
|
add_file "iscsi-scst/README_in-tree" "Documentation/scst/README.iscsi" \
|
|
| process_patch "iscsi-scst-doc.diff"
|
|
|
|
|
|
# Directory drivers/scsi/qla2xxx/
|
|
|
|
if [ "${qla2x00t}" = "true" ]; then
|
|
|
|
( cd qla2x00t && "$PWD/generate-in-tree-patches" "$1" ) || exit $?
|
|
|
|
for f in qla2x00t/in-tree-patches/"$1"/*.patch; do
|
|
[ -e "$f" ] || continue
|
|
g="${f#qla2x00t/in-tree-patches/$1/}"
|
|
g="${g%.patch}"
|
|
add_patch "${f}" "drivers/scsi/qla2xxx/${g}"
|
|
done
|
|
|
|
add_file "qla2x00t/qla2x_tgt.h" \
|
|
"drivers/scsi/qla2xxx/qla2x_tgt.h"
|
|
|
|
add_file "qla2x00t/qla2x_tgt_def.h" \
|
|
"drivers/scsi/qla2xxx/qla2x_tgt_def.h"
|
|
|
|
for f in qla2x00t/qla2x00-target/*.[ch]; do
|
|
[ -e "$f" ] &&
|
|
add_file "${f}" "drivers/scsi/qla2xxx/${f#qla2x00t/qla2x00-target/}"
|
|
done
|
|
|
|
add_file "qla2x00t/qla2x00-target/README" \
|
|
"Documentation/scst/README.qla2x00t" \
|
|
| process_patch "qla2x00t-doc.diff"
|
|
|
|
elif [ "${qla2x00t_32gbit}" = "true" ]; then
|
|
|
|
( cd qla2x00t-32gbit && "$PWD/generate-in-tree-patches" "$1" ) || exit $?
|
|
|
|
for f in qla2x00t-32gbit/in-tree-patches/"$1"/*.patch; do
|
|
[ -e "$f" ] || continue
|
|
g="${f#qla2x00t-32gbit/in-tree-patches/$1/}"
|
|
g="${g%.patch}"
|
|
if [ "$g" = "qla.h" ]; then
|
|
add_patch "${f}" "include/trace/events/${g}"
|
|
else
|
|
add_patch "${f}" "drivers/scsi/qla2xxx/${g}"
|
|
fi
|
|
done
|
|
|
|
for f in qla2x00t-32gbit/qla2x00-target/*.[ch]; do
|
|
[ -e "$f" ] || continue
|
|
add_file "${f}" "drivers/scsi/qla2xxx/${f#qla2x00t-32gbit/qla2x00-target/}"
|
|
done
|
|
|
|
add_file "qla2x00t-32gbit/qla2x00-target/README" \
|
|
"Documentation/scst/README.qla2x00t" \
|
|
| process_patch "qla2x00t-doc.diff"
|
|
|
|
fi \
|
|
| process_patch "qla2x00t.diff"
|
|
|
|
|
|
# Directory drivers/scst/srpt
|
|
|
|
{
|
|
|
|
cat <<EOF
|
|
This patch adds the kernel module ib_srpt, which is a SCSI RDMA Protocol (SRP)
|
|
target implementation. This driver uses the InfiniBand stack and the SCST core.
|
|
|
|
It is a high performance driver capable of handling 600K+ 4K random write
|
|
IOPS by a single target as well as 2.5+ GB/s sequential throughput over
|
|
a single QDR IB port.
|
|
|
|
It was originally developed by Vu Pham (Mellanox) and has been optimized by
|
|
Bart Van Assche.
|
|
|
|
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
|
|
Cc: Vu Pham <vu@mellanox.com>
|
|
Cc: Roland Dreier <rdreier@cisco.com>
|
|
Cc: David Dillow <dillowda@ornl.gov>
|
|
EOF
|
|
if [ "$srpt" = "true" ]; then
|
|
|
|
add_file "srpt/README_in-tree" "Documentation/scst/README.srpt"
|
|
|
|
add_file "srpt/src/Kconfig" "drivers/scst/srpt/Kconfig"
|
|
|
|
add_file "srpt/src/Makefile.in_kernel" "drivers/scst/srpt/Makefile"
|
|
|
|
for f in srpt/src/*.[ch]; do
|
|
[ -e "$f" ] || continue
|
|
add_file "${f}" "drivers/scst/srpt/${f#srpt/src/}"
|
|
done
|
|
|
|
else
|
|
|
|
add_empty_file "drivers/scst/srpt/Kconfig"
|
|
|
|
add_empty_file "drivers/scst/srpt/Makefile"
|
|
|
|
fi \
|
|
} | process_patch "scst_17_srpt.diff"
|
|
|
|
|
|
# Directory drivers/scst/scst_local
|
|
|
|
(
|
|
add_file "scst_local/README" "Documentation/scst/README.scst_local"
|
|
|
|
add_file "scst_local/in-tree/Kconfig" "drivers/scst/scst_local/Kconfig"
|
|
|
|
if [ -e "scst_local/in-tree/Makefile-${kver}" ]; then
|
|
add_file "scst_local/in-tree/Makefile-${kver}" "drivers/scst/scst_local/Makefile"
|
|
else
|
|
add_file "scst_local/in-tree/Makefile" "drivers/scst/scst_local/Makefile"
|
|
fi
|
|
|
|
add_file "scst_local/scst_local.c" "drivers/scst/scst_local/scst_local.c"
|
|
) \
|
|
| process_patch "scst_16_local.diff"
|