[OE-core] [PATCH] ltp: Fix for glibc 2.23+

Khem Raj raj.khem at gmail.com
Tue Feb 2 06:02:04 UTC 2016


On Mon, Feb 1, 2016 at 1:23 PM, Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
> glibc 2.23 onwards drops support for the bdflush syscall, which doesn't actually
> do anything on 2.6 kernels anyway, its handled by a kernel thread.
>
> Therefore drop the test.

I have a patch which upgrade to latest release which fixes this issue
and plus it fixes build issues for LTP for musl
the patch is here

http://git.openembedded.org/openembedded-core-contrib/commit/?h=kraj/master&id=1ad922b3abdfe7f3dadb4b16e7fb3a7d10495023

>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
>
> diff --git a/meta/recipes-extended/ltp/ltp/no_bdflush.patch b/meta/recipes-extended/ltp/ltp/no_bdflush.patch
> new file mode 100644
> index 0000000..02bff79
> --- /dev/null
> +++ b/meta/recipes-extended/ltp/ltp/no_bdflush.patch
> @@ -0,0 +1,182 @@
> +glibc 2.23 onwards drops support for the bdflush syscall, which doesn't actually
> +do anything on 2.6 kernels anyway, its handled by a kernel thread.
> +
> +Therefore drop the test.
> +
> +RP
> +2016/2/1
> +Upstream-Status: Pending
> +
> +Index: git/runtest/syscalls
> +===================================================================
> +--- git.orig/runtest/syscalls
> ++++ git/runtest/syscalls
> +@@ -31,8 +31,6 @@ asyncio02 asyncio02
> + bind01 bind01
> + bind02 bind02
> +
> +-bdflush01 bdflush01
> +-
> + brk01 brk01
> +
> + capget01 capget01
> +Index: git/testcases/kernel/syscalls/bdflush/Makefile
> +===================================================================
> +--- git.orig/testcases/kernel/syscalls/bdflush/Makefile
> ++++ /dev/null
> +@@ -1,23 +0,0 @@
> +-#
> +-#  Copyright (c) International Business Machines  Corp., 2009
> +-#
> +-#  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; either version 2 of the License, or
> +-#  (at your option) any later version.
> +-#
> +-#  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.
> +-#
> +-#  You should have received a copy of the GNU General Public License
> +-#  along with this program;  if not, write to the Free Software
> +-#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
> +-#
> +-
> +-top_srcdir            ?= ../../../..
> +-
> +-include $(top_srcdir)/include/mk/testcases.mk
> +-
> +-include $(top_srcdir)/include/mk/generic_leaf_target.mk
> +Index: git/testcases/kernel/syscalls/bdflush/bdflush01.c
> +===================================================================
> +--- git.orig/testcases/kernel/syscalls/bdflush/bdflush01.c
> ++++ /dev/null
> +@@ -1,127 +0,0 @@
> +-/******************************************************************************/
> +-/* Copyright (c) Crackerjack Project., 2007                              */
> +-/*                                                                        */
> +-/* 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; either version 2 of the License, or    */
> +-/* (at your option) any later version.                                        */
> +-/*                                                                        */
> +-/* 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.                      */
> +-/*                                                                        */
> +-/* You should have received a copy of the GNU General Public License    */
> +-/* along with this program;  if not, write to the Free Software              */
> +-/* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    */
> +-/*                                                                        */
> +-/******************************************************************************/
> +-/******************************************************************************/
> +-/*                                                                        */
> +-/* File:      bdflush01.c                                         */
> +-/*                                                                        */
> +-/* Description: bdflush() starts, flushes, or tunes the buffer-dirty-flush    */
> +-/*            daemon. Only a privileged process (one with the CAP_SYS_ADMIN */
> +-/*            capability) may call bdflush().                               */
> +-/*                                                                          */
> +-/*            If func is negative or 0, and no daemon has been started,     */
> +-/*            then bdflush() enters the daemon code and never returns.      */
> +-/*                                                                          */
> +-/*            If func is 1, some dirty buffers are written to disk.         */
> +-/*            If func is 2 or more and is even (low bit is 0), then address */
> +-/*            is the address of a long word, and the tuning parameter       */
> +-/*            numbered (func-2)/2 is returned to the caller in that address.*/
> +-/*                                                                          */
> +-/*            If func is 3 or more and is odd (low bit is 1), then data is  */
> +-/*            a long word, and the kernel sets tuning parameter numbered    */
> +-/*            (func-3)/2 to that value.                                     */
> +-/*                                                                          */
> +-/*            The set of parameters, their values, and their legal ranges   */
> +-/*            are defined in the kernel source file fs/buffer.c.            */
> +-/*                                                                          */
> +-/*            Return Value:                                                 */
> +-/*            If func is negative or 0 and the daemon successfully starts,  */
> +-/*            bdflush() never returns. Otherwise, the return value is 0 on  */
> +-/*            success and -1 on failure, with errno set to indicate the     */
> +-/*            error.                                                        */
> +-/*                                                                          */
> +-/*            Errors:                                                       */
> +-/*                    EBUSY                                                 */
> +-/*                        An attempt was made to enter the daemon code after*/
> +-/*                        another process has already entered.              */
> +-/*                    EFAULT                                                */
> +-/*                       address points outside your accessible address     */
> +-/*                       space.                                             */
> +-/*                    EINVAL                                                */
> +-/*                        An attempt was made to read or write an invalid   */
> +-/*                        parameter number, or to write an invalid value to */
> +-/*                        a parameter.                                      */
> +-/*                    EPERM                                                 */
> +-/*                        Caller does not have the CAP_SYS_ADMIN capability.*/
> +-/*                                                                          */
> +-/* Usage:  <for command-line>                                          */
> +-/* bdflush01 [-c n] [-e][-i n] [-I x] [-p x] [-t]                   */
> +-/*      where,  -c n : Run n copies concurrently.                          */
> +-/*          -e   : Turn on errno logging.                              */
> +-/*          -i n : Execute test n times.                                */
> +-/*          -I x : Execute test for x seconds.                            */
> +-/*          -P x : Pause for x seconds between iterations.            */
> +-/*          -t   : Turn on syscall timing.                            */
> +-/*                                                                        */
> +-/* Total Tests: 1                                                          */
> +-/*                                                                        */
> +-/* Test Name:   bdflush01                                           */
> +-/* History:     Porting from Crackerjack to LTP is done by                */
> +-/*          Manas Kumar Nayak maknayak at in.ibm.com>                    */
> +-/******************************************************************************/
> +-#include <stdio.h>
> +-#include <stdlib.h>
> +-#include <sys/wait.h>
> +-#include <sys/types.h>
> +-#include <unistd.h>
> +-#include <errno.h>
> +-#include <sys/stat.h>
> +-#include <sys/kdaemon.h>
> +-
> +-#include "test.h"
> +-#include "linux_syscall_numbers.h"
> +-
> +-char *TCID = "bdflush01";
> +-int testno;
> +-int TST_TOTAL = 1;
> +-
> +-void cleanup(void)
> +-{
> +-      tst_rmdir();
> +-}
> +-
> +-void setup(void)
> +-{
> +-      TEST_PAUSE;
> +-      tst_tmpdir();
> +-}
> +-
> +-int main(int ac, char **av)
> +-{
> +-      long data;
> +-
> +-      tst_parse_opts(ac, av, NULL, NULL);
> +-
> +-      setup();
> +-
> +-      /*
> +-       * TODO (garrcoop): add more functional testcases; there are a ton
> +-       * missing.
> +-       */
> +-      data = 0;
> +-      tst_count = 1;
> +-      for (testno = 0; testno < TST_TOTAL; ++testno) {
> +-              TEST(ltp_syscall(__NR_bdflush, 3, data));
> +-              if (TEST_RETURN == -1)
> +-                      tst_brkm(TFAIL | TTERRNO, cleanup, "bdflush failed");
> +-              else
> +-                      tst_resm(TPASS, "bdflush() = %ld", TEST_RETURN);
> +-      }
> +-      cleanup();
> +-      tst_exit();
> +-}
> diff --git a/meta/recipes-extended/ltp/ltp_20150903.bb b/meta/recipes-extended/ltp/ltp_20150903.bb
> index f018dae..615d0f8 100644
> --- a/meta/recipes-extended/ltp/ltp_20150903.bb
> +++ b/meta/recipes-extended/ltp/ltp_20150903.bb
> @@ -30,6 +30,7 @@ SRC_URI = "git://github.com/linux-test-project/ltp.git \
>      file://add-knob-for-tirpc.patch \
>      file://0001-ltp-vma03-fix-the-alginment-of-page-size.patch \
>      file://0001-Fix-compilation-for-gcc-5.x.patch \
> +    file://no_bdflush.patch \
>  "
>
>  S = "${WORKDIR}/git"
>
>



More information about the Openembedded-core mailing list