Files
scst/scripts/kernel-functions
Yan Burman 9b246065ab Merged revisions 5746-5750,5756-5757,5759,5761,5763,5765-5766,5768,5770-5778 via svnmerge from
svn+ssh://yanb123@svn.code.sf.net/p/scst/svn/branches/3.0.x

........
  r5746 | bvassche | 2014-09-03 12:12:08 +0300 (Wed, 03 Sep 2014) | 1 line
  
  srpt/README: Fix SLES patch instructions (merge r5682 from trunk)
........
  r5747 | bvassche | 2014-09-03 12:14:20 +0300 (Wed, 03 Sep 2014) | 1 line
  
  srpt/Makefile: SLES + Mellanox OFED build fix (merge r5679:5681 from trunk)
........
  r5748 | bvassche | 2014-09-03 12:17:39 +0300 (Wed, 03 Sep 2014) | 1 line
  
  Add kernel 3.16 nightly build infrastructure (merge r5719 from trunk)
........
  r5749 | bvassche | 2014-09-03 12:19:07 +0300 (Wed, 03 Sep 2014) | 1 line
  
  ib_srpt: Kernel 3.17 build fix (merge r5725 from trunk)
........
  r5750 | bvassche | 2014-09-03 12:22:38 +0300 (Wed, 03 Sep 2014) | 1 line
  
  nightly build: Add kernel 3.16.1 (merge r5651:5720 from trunk)
........
  r5756 | bvassche | 2014-09-03 15:33:33 +0300 (Wed, 03 Sep 2014) | 1 line
  
  scst.h: Make vzalloc() available on RHEL 6.0 (merge r5752 from trunk)
........
  r5757 | bvassche | 2014-09-03 15:35:49 +0300 (Wed, 03 Sep 2014) | 2 lines
  
  scst_vdisk: RHEL 6.0 build fix (merge r5754:5755 from trunk)
........
  r5759 | bvassche | 2014-09-03 16:44:53 +0300 (Wed, 03 Sep 2014) | 1 line
  
  scst.h: RHEL 5.10 build fix (merge r5758 from trunk)
........
  r5761 | bvassche | 2014-09-03 16:53:03 +0300 (Wed, 03 Sep 2014) | 1 line
  
  scst.h: RHEL 5.10 build fix (merge r5760 from trunk)
........
  r5763 | bvassche | 2014-09-03 17:01:04 +0300 (Wed, 03 Sep 2014) | 1 line
  
  scst.h: Fix definition of __aligned() (merge r5762 from trunk)
........
  r5765 | bvassche | 2014-09-03 17:25:53 +0300 (Wed, 03 Sep 2014) | 1 line
  
  scst_vdisk: Use parentheses around && inside ||
........
  r5766 | bvassche | 2014-09-03 17:27:09 +0300 (Wed, 03 Sep 2014) | 1 line
  
  Update for kernel 3.16 (merge r5717 from trunk)
........
  r5768 | bvassche | 2014-09-04 15:45:59 +0300 (Thu, 04 Sep 2014) | 1 line
  
  ib_srpt: Version 3.0.0
........
  r5770 | bvassche | 2014-09-04 16:02:42 +0300 (Thu, 04 Sep 2014) | 1 line
  
  iscsi-scst: Build fix for IPV6=n (merge r5732 from trunk)
........
  r5771 | bvassche | 2014-09-04 16:06:38 +0300 (Thu, 04 Sep 2014) | 1 line
  
  iscsi-scst: Micro-optimize cmnd_prepare_recv_pdu() (merge r5735 from trunk)
........
  r5772 | bvassche | 2014-09-04 16:11:23 +0300 (Thu, 04 Sep 2014) | 1 line
  
  scripts/generate-patched-kernel: Fix for invocation from current directory (merge r5659 and r5745 from trunk)
........
  r5773 | bvassche | 2014-09-04 16:13:52 +0300 (Thu, 04 Sep 2014) | 1 line
  
  scripts/kernel-functions: Handle 3.x.0 kernel versions correctly (merge r5658 and r5661 from trunk)
........
  r5774 | bvassche | 2014-09-04 16:29:18 +0300 (Thu, 04 Sep 2014) | 1 line
  
  Add support for the RHEL 7 kernel (merge r5710:5711 from trunk)
........
  r5775 | bvassche | 2014-09-04 16:44:08 +0300 (Thu, 04 Sep 2014) | 1 line
  
  Forbid using '.' in PR and mode page file names (merge r5702 from trunk)
........
  r5776 | bvassche | 2014-09-04 16:46:14 +0300 (Thu, 04 Sep 2014) | 1 line
  
  scst_pres: Make a few error messages more clear (merge r5733 from trunk)
........
  r5777 | bvassche | 2014-09-04 16:49:12 +0300 (Thu, 04 Sep 2014) | 1 line
  
  Pass-through error handling fix (merge r5703 from trunk)
........
  r5778 | bvassche | 2014-09-04 16:55:04 +0300 (Thu, 04 Sep 2014) | 1 line
  
  scstadmin: Suppress a Perl warning (merge r5731 from trunk)
........


git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.0.x-iser@5784 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2014-09-07 14:01:27 +00:00

225 lines
7.4 KiB
Bash

# -*- mode: shell-script -*-
# Shell functions for parsing the Linux kernel version and for downloading
# from kernel.org.
kernel_mirror="http://ftp.kernel.org/pub/linux/kernel"
kernel_longterm="http://www.kernel.org/pub/linux/kernel"
kernel_sources="$HOME/software/downloads"
# Kernel version number.
function kernel_version {
if [ "${1#2.}" != "$1" ]; then
echo "$1" | sed -n 's/^\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/p'
else
echo "$1" | sed -n 's/^\([0-9]*\.[0-9]*\).*$/\1/p'
fi
}
# Last component of the kernel version, or the empty string if $1 does
# not contain a patchlevel.
function patchlevel {
if [ "${1#2.}" != "$1" ]; then
echo "$1" | sed -n 's/^\([0-9]*\.[0-9]*\.[0-9]*\)[.-]\(.*\)$/\2/p'
else
echo "$1" | sed -n 's/^\([0-9]*\.[0-9]*\)[.-]\(.*\)$/\2/p'
fi
}
# Download the file from URL $1 and save it in the current directory.
function download_file {
if [ ! -e "$(basename "$1")" ]; then
if [ "${quiet_download}" = "false" ]; then
{ wget -q -nc -O- "$1" 2>/dev/null | grep -q .; } \
&& echo "Downloading $1 ..."
fi
wget -q -nc "$1"
fi
[ -e "$(basename "$1")" ]
}
# Make sure the kernel tarball and patch file are present in directory
# ${kernel_sources}. Download any missing files from ${kernel_mirror}.
function download_kernel {
local kver="$(kernel_version $1)"
local plevel="$(patchlevel $1)"
local series="$1"
if [ "${series:0:2}" = "3." ]; then
series="3.x"
else
series="${series:0:3}"
fi
mkdir -p "${kernel_sources}" || return $?
test -w "${kernel_sources}" || return $?
(
cd "${kernel_sources}" || return $?
if [ "$plevel" = "" -o "$plevel" = "0" ] ||
download_file "${kernel_mirror}/v$series/patch-$1.xz" ||
download_file "${kernel_mirror}/v$series/longterm/v${kver}/patch-$1.xz"
then
download_file "${kernel_mirror}/v$series/linux-${kver}.tar.xz" \
|| download_file "${kernel_mirror}/v$series/longterm/v${kver}/linux-${kver}.tar.xz" \
|| return $?
else
download_file "${kernel_mirror}/v$series/linux-$1.tar.xz" \
|| download_file "${kernel_mirror}/v$series/longterm/v${kver}/linux-$1.tar.xz" \
|| return $?
fi
)
}
function extract_kernel_archive {
if [ -e "${kernel_sources}/linux-$1.tar.xz" ]; then
xz -cd "${kernel_sources}/linux-$1.tar.xz" | tar xf -
else
tar xjf "${kernel_sources}/linux-$1.tar.bz2"
fi
}
# Create a linux-$1 tree in the current directory, where $1 is a kernel
# version number with either three or four components.
function extract_kernel_tree {
local kver="$(kernel_version $1)"
local plevel="$(patchlevel $1)"
local tmpdir=kernel-tree-tmp-$$
rm -rf "linux-$1" "${tmpdir}"
mkdir "${tmpdir}" || return $?
(
cd "${tmpdir}" || return $?
if [ "$plevel" != "" -a "$plevel" != "0" -a \
-e "${kernel_sources}/patch-$1.xz" ]; then
extract_kernel_archive $kver || return $?
mv linux-$kver linux-$1
( cd linux-$1 && xz -cd "${kernel_sources}/patch-$1.xz" \
| patch -p1 -f -s; ) \
|| return $?
else
extract_kernel_archive $1 ||
{ extract_kernel_archive $kver && mv linux-$kver linux-$1; } ||
return $?
fi
mv "linux-$1" ".." || return $?
cd "../linux-$1" || return $?
if [ "$1" = "2.6.29" -o "$1" = "2.6.29.1" -o "$1" = "2.6.29.2" -o "$1" = "2.6.29.3" ]
then
patch -f -s -p1 <<'EOF'
Make sure that branch profiling does not trigger sparse warnings.
See also http://bugzilla.kernel.org/show_bug.cgi?id=12925
---
See also http://lkml.org/lkml/2009/4/5/120
--- orig/linux-2.6.29/include/linux/compiler.h 2009-03-23 19:12:14.000000000 -0400
+++ linux-2.6.29/include/linux/compiler.h 2009-03-24 08:46:46.000000000 -0400
@@ -75,7 +75,8 @@ struct ftrace_branch_data {
* Note: DISABLE_BRANCH_PROFILING can be used by special lowlevel code
* to disable branch tracing on a per file basis.
*/
-#if defined(CONFIG_TRACE_BRANCH_PROFILING) && !defined(DISABLE_BRANCH_PROFILING)
+#if defined(CONFIG_TRACE_BRANCH_PROFILING) \
+ && !defined(DISABLE_BRANCH_PROFILING) && !defined(__CHECKER__)
void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect);
#define likely_notrace(x) __builtin_expect(!!(x), 1)
EOF
fi
if [ "${1#2.6.31}" != "$1" ]
then
patch -f -s -p1 <<'EOF'
Checking a 2.6.31.1 kernel configured with allyesconfig/allmodconfig
with sparse (make C=2) triggers a sparse warning on code that uses the
kmemcheck_annotate_bitfield() macro. An example of such a warning:
include/net/inet_sock.h:208:17: warning: do-while statement is not a compound statement
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Cc: Vegard Nossum <vegardno@ifi.uio.no>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
See also http://lkml.org/lkml/2009/9/26/51
--- linux-2.6.31.1/include/linux/kmemcheck-orig.h 2009-09-26 13:53:44.000000000 +0200
+++ linux-2.6.31.1/include/linux/kmemcheck.h 2009-09-26 13:53:56.000000000 +0200
@@ -137,13 +137,13 @@ static inline void kmemcheck_mark_initia
int name##_end[0];
#define kmemcheck_annotate_bitfield(ptr, name) \
- do if (ptr) { \
+ do { if (ptr) { \
int _n = (long) &((ptr)->name##_end) \
- (long) &((ptr)->name##_begin); \
BUILD_BUG_ON(_n < 0); \
\
kmemcheck_mark_initialized(&((ptr)->name##_begin), _n); \
- } while (0)
+ } } while (0)
#define kmemcheck_annotate_variable(var) \
do { \
EOF
fi
if [ "${1#2.6.32}" != "$1" -o "${1#2.6.33}" != "$1" ]
then
patch -f -s -p1 <<'EOF'
Get rid of sparse errors on sk_buff.protocol.
--- linux/include/linux/skbuff-orig.h 2010-12-07 13:40:51.000000000 -0500
+++ linux/include/linux/skbuff.h 2010-12-07 13:41:05.000000000 -0500
@@ -349,8 +349,8 @@ struct sk_buff {
ipvs_property:1,
peeked:1,
nf_trace:1;
- __be16 protocol:16;
kmemcheck_bitfield_end(flags1);
+ __be16 protocol;
void (*destructor)(struct sk_buff *skb);
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
EOF
fi
if [ "${1#3.13}" != "$1" ]; then
if [ "$1" = "3.13" ] || [ "${1#3.13.}" -lt 6 ]; then
patch -f -s -p1 <<'EOF'
From 7b4ec8dd7d4ac467e9eee4d49f2c9574d773efbb Mon Sep 17 00:00:00 2001
From: Johannes Berg <johannes.berg@intel.com>
Date: Thu, 16 Jan 2014 10:18:48 +1030
Subject: [PATCH] export: declare ksymtab symbols
sparse complains about any __ksymtab symbols with the following:
warning: symbol '__ksymtab_...' was not declared. Should it be static?
due to Andi's patch making it non-static.
Mollify sparse by declaring the symbol extern, otherwise we get
drowned in sparse warnings for anything that uses EXPORT_SYMBOL
in the sources, making it easy to miss real warnings.
Fixes: e0f244c63fc9 ("asmlinkage, module: Make ksymtab [...] __visible")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
include/linux/export.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/linux/export.h b/include/linux/export.h
index 3f2793d..96e45ea 100644
--- a/include/linux/export.h
+++ b/include/linux/export.h
@@ -59,6 +59,7 @@ extern struct module __this_module;
static const char __kstrtab_##sym[] \
__attribute__((section("__ksymtab_strings"), aligned(1))) \
= VMLINUX_SYMBOL_STR(sym); \
+ extern const struct kernel_symbol __ksymtab_##sym; \
__visible const struct kernel_symbol __ksymtab_##sym \
__used \
__attribute__((section("___ksymtab" sec "+" #sym), unused)) \
EOF
fi
fi
)
rmdir "${tmpdir}"
}