From patchwork Wed Aug 1 23:00:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Xu X-Patchwork-Id: 952471 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Cfjjew7h"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41gph54JDjz9s3Z for ; Thu, 2 Aug 2018 09:01:08 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 981C7D9B; Wed, 1 Aug 2018 23:01:05 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 8C3E3D61 for ; Wed, 1 Aug 2018 23:01:04 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id E93986C5 for ; Wed, 1 Aug 2018 23:01:03 +0000 (UTC) Received: by mail-pg1-f194.google.com with SMTP id y5-v6so143091pgv.1 for ; Wed, 01 Aug 2018 16:01:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=v+KRhIRZerXl5QLoiHx5aq/bYV6oQf1poo9OpGhntiY=; b=Cfjjew7hcJRMJlGbevEwF9OjlKhRyg9bttnGfUpA0GTK5FL2ih3xgWPszU9Hf7329c zDn/sD1AOt5LY0dkUhjJFxHAHa3pLcNLYJHlkDvUjpspNBJVjunKqzUdIAc67WRS0aeP OgYQ74W+y0XoHh/qrKXaL1THMIJQvTL8/K0JRUhjKc+AF2lzrEIHOZrWdBOR6Upmrhsk BmkPVhJ0j594eV3jvbn7qBw2cWMXlzFPoY02FiNOX5FXU5FPvi8+QCgSuoFVESemPw5i M/bCX20aWNyPmGNZM/b4zOD+R3lbPMN/Qb/YNKaOO+Oa01sekdbIqQ+yMG6ZJwkD+JzY jU1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=v+KRhIRZerXl5QLoiHx5aq/bYV6oQf1poo9OpGhntiY=; b=djQscj7ihVaCSsnOL1QugrtlbSfXevqniM1UgqeJpkFXl/WXzSpkDuz3rUNWYotkJf uTvHgCZZjWaoehZ8DIPk93ZaiH1nEfeOk5L7jQ8U8G/kw6hHq6DQgZbZIG2JfUPp9lds LnfDeAJ2n5XUqdUeIvaHWrp1pHik3LfDTv2t6/RlSZe2Ro3sFf2xgv93T3Mo0yyVM09P 7lclKQVL1u64mPIgpmXrb1W0l3F/D6UGafK5YMkCnj9x0YKmW/XDHsIc+L8ACI3F7P5/ awjANQnHJBhdkEfoHkvBKSH1LJxAPrtyxA3wugOCnvGmGrT0CKHQjxo29GFnElEMcPmc 9sJQ== X-Gm-Message-State: AOUpUlGTvaEbNji6i/0KH85xEPK1gFsp1AcJgbn/aRzXtuALuRiSxS+9 7cS0n5rYvkvkZTTDBATXOpn4/5J3 X-Google-Smtp-Source: AAOMgpeGtNW3Xp4Of89MDvgG55dGI+ibJdIIot28gntpjDxUVha2UY+9dGg/cvhDNCh1AYmoq1Kl+Q== X-Received: by 2002:a65:5284:: with SMTP id y4-v6mr242857pgp.283.1533164463278; Wed, 01 Aug 2018 16:01:03 -0700 (PDT) Received: from rhel72-vm1-local.eng.vmware.com. ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id z20-v6sm217685pfd.99.2018.08.01.16.01.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Aug 2018 16:01:02 -0700 (PDT) From: Martin Xu To: dev@openvswitch.org Date: Wed, 1 Aug 2018 16:00:58 -0700 Message-Id: <1533164459-37727-1-git-send-email-martinxu9.ovs@gmail.com> X-Mailer: git-send-email 1.8.3.1 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Flavio Leitner Subject: [ovs-dev] [PATCH v6 1/2] rhel: support kmod build against multiple 7.2 kernels, rhel6 X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This patch extends commit 89dd5819cf18 (rhel: support kmod-openvswitch build against multiple kernels, rhel6) to support building kmod RPMs with multiple minor revisions within 3.10.0-327 kernels. It was discovered for RHEL 7.2 that 41.3 minor revision introduced backward incompatible changes. VMware-BZ: #2170334 Signed-off-by: Martin Xu CC: Greg Rose CC: Ben Pfaff CC: Flavio Leitner CC: Yi-Hung Wei Acked-by: Yi-Hung Wei --- v1->v2: added author sign-off signature v2->v3: instead of using hard coded versions for openvswitch kernel modules, retrieve the information from kmod package v3->v4: sent wrong v3 patch, some echo's for debugging not removed v4->v5: fix one line that exceeded 79 chars v5->v6: separate bug fix to a separate commit rhel/kmod-openvswitch-rhel6.spec.in | 7 ++- ...sr_share_openvswitch_scripts_ovs-kmod-manage.sh | 68 +++++++++++++++++++--- 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/rhel/kmod-openvswitch-rhel6.spec.in b/rhel/kmod-openvswitch-rhel6.spec.in index f18802d..7ca4853 100644 --- a/rhel/kmod-openvswitch-rhel6.spec.in +++ b/rhel/kmod-openvswitch-rhel6.spec.in @@ -31,7 +31,8 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) # for specified kernel version. # Use -D 'kversion 3.10.0-693.1.1.el7.x86_64 3.10.0-693.17.1.el7.x86_64' # to build package for mulitple kernel versions in the same package -# This only works for kernel 3.10.0 major revision 693 +# This only works for kernel 3.10.0 major revision 693 (RHEL 7.4) +# and major revision 327 (RHEL 7.2) # By default, build against the latest installed kernel-devel %{!?kversion:%global kversion %(rpm -qa | egrep "^kernel(-rt|-aarch64)?-devel" | /usr/lib/rpm/redhat/rpmsort -r | head -n 1| sed "s/^kernel.*-devel-//")} @@ -86,8 +87,8 @@ install -p -m 0755 rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh \ current_kernel=$(uname -r) IFS=. read installed_major installed_minor installed_micro installed_arch \ installed_build <<<"${current_kernel##*-}" -if [ "$installed_major" = "693" ]; then - # Workaround for RHEL 7.4 +if [ "$installed_major" = "327" ] || [ "$installed_major" = "693" ]; then + # Workaround for RHEL 7.2 and 7.4 if [ -x "/usr/share/%{oname}/scripts/ovs-kmod-manage.sh" ]; then /usr/share/%{oname}/scripts/ovs-kmod-manage.sh fi diff --git a/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh index a6c738f..6beabeb 100644 --- a/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh +++ b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh @@ -14,23 +14,39 @@ # See the License for the specific language governing permissions and # limitations under the License. -# This version of the script is intended to be used on kernel version -# 3.10.0 major revision 693 only. It is packaged in the openvswitch kmod RPM -# built using the rhel6 spec file, and run in the post-install for minor -# revision 693 kernels. +# This version of the script is intended to be used on kernel version 3.10.0 +# major revision 327 and 693 only. It is packaged in the openvswitch kmod RPM +# built using the rhel6 spec file, and run in the post-install for major +# revision 327/693 kernels. # -# Due to some backward incompatible changes introduced in minor revision 17.1, +# For kernel 3.10.0-693, +# due to some backward incompatible changes introduced in minor revision 17.1, # kernel modules built against kernels newer than 17.1 cannot be loaded on # system running kernels older than 17.1, vice versa. # +# For kernel 3.10.0-327, +# due to some backward incompatible changes introduced in minor revision 41.3, +# kernel modules built against kernels newer than 41.3 cannot be loaded on +# system running kernels older than 41.3, vice versa. +# # This script checks the current running kernel version, and update symlinks # for the openvswitch kernel modules in the appropriate kernel directory, # provided the kmod RPM has installed kernel modules files built from both -# 1.1 and 17.1 minor revisions. +# minor revisions. # # In case of a kernel minor revision change after the openvswitch kmod package # is installed, this script shall be run manually after system reboots and # switches to a different kernel +if [ -n "$(rpm -qa kmod-openvswitch)" ]; then + rpmname="kmod-openvswitch" +elif [ -n "$(rpm -qa openvswitch-kmod)" ]; then + rpmname="openvswitch-kmod" +else + echo "openvswitch kmod package not installed, existing" + exit 1 +fi +#echo $rpmname + script_name=$(basename -- "$0") current_kernel=$(uname -r) echo current kernel is $current_kernel @@ -42,7 +58,41 @@ IFS=. read installed_major installed_minor installed_micro \ # installed_build=$installed_build expected_base_minor="el7" -expected_minor=11 +if [ "$installed_major" = "327" ]; then + expected_minor=36 +elif [ "$installed_major" = "693" ]; then + expected_minor=11 +else + echo "This script is not intended to run on kernel $(uname -r)" + exit 1 +fi + +kmod_minor_versions=() +kversion=$(rpm -ql ${rpmname} | grep '\.ko$' | \ + sed -n -e 's/^\/lib\/modules\/\(.*\)\/extra\/.*$/\1/p' | \ + sort | uniq) +for kv in $kversion; do + IFS=. read kmod_major kmod_minor kmod_micro kmod_arch \ + kmod_build <<<"${kv##*-}" +# echo kmod_major=$kmod_major kmod_minor=$kmod_minor \ +# kmod_micro=$kmod_micro kmod_arch=$kmod_arch \ +# kmod_build=$kmod_build + kmod_minor_versions+=($kmod_minor) +done +sorted_kmod_minor_versions=$(printf "%s\n" "${kmod_minor_versions[@]}" | \ + sort -n) +#echo "$sorted_kmod_minor_versions" + +if [ ! -n "$sorted_kmod_minor_versions" ]; then + echo "No kernel modules found from package $rpmname, exiting" + exit 1 +else + # first line for kmod_minor_low_ver, last for kmod_minor_high_ver + kmod_minor_low_ver=$(echo "$sorted_kmod_minor_versions" | head -1) + kmod_minor_high_ver=$(echo "$sorted_kmod_minor_versions" | tail -1) +fi +#echo "Installing KMOD with minor revisions $kmod_minor_low_ver and \ +# $kmod_minor_high_ver" found_match=false for kname in `ls -d /lib/modules/*` @@ -51,14 +101,14 @@ do # echo major=$major minor=$minor micro=$micro arch=$arch build=$build if [ "$installed_minor" = "$expected_base_minor" ] || [ "$installed_minor" -le "$expected_minor" ]; then - if [ "$minor" = "1" ]; then + if [ "$minor" = "$kmod_minor_low_ver" ]; then requested_kernel=$kname found_match="true" echo "Installing Openvswitch KMOD from kernel $kname" break fi else - if [ "$minor" = "17" ]; then + if [ "$minor" = "$kmod_minor_high_ver" ]; then requested_kernel=$kname found_match="true" echo "Installing Openvswitch KMOD from kernel $kname"