All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Thiery <heiko.thiery@gmail.com>
To: David Ahern <dsahern@gmail.com>
Cc: netdev@vger.kernel.org, petr.vorel@gmail.com,
	linux-kernel@vger.kernel.org, stephen@networkplumber.org,
	Dmitry Yakunin <zeil@yandex-team.ru>
Subject: Re: [PATCH iproute2-next v3] lib/fs: fix issue when {name,open}_to_handle_at() is not implemented
Date: Fri, 14 May 2021 12:22:22 +0200	[thread overview]
Message-ID: <CAEyMn7a4Z3U-fUvFLcWmPW3hf-x6LfcTi8BZrcDfhhFF0_9=ow@mail.gmail.com> (raw)
In-Reply-To: <6ba0adf4-5177-c50a-e921-bee898e3fdb9@gmail.com>

Hi David,

Am Mo., 10. Mai 2021 um 00:20 Uhr schrieb David Ahern <dsahern@gmail.com>:
>
> On 5/8/21 12:49 AM, Heiko Thiery wrote:
> > With commit d5e6ee0dac64 the usage of functions name_to_handle_at() and
> > open_by_handle_at() are introduced. But these function are not available
> > e.g. in uclibc-ng < 1.0.35. To have a backward compatibility check for the
> > availability in the configure script and in case of absence do a direct
> > syscall.
> >
> > Fixes: d5e6ee0dac64 ("ss: introduce cgroup2 cache and helper functions")
> > Cc: Dmitry Yakunin <zeil@yandex-team.ru>
> > Cc: Petr Vorel <petr.vorel@gmail.com>
> > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
> > ---
> > v3:
> >  - use correct syscall number (thanks to Petr Vorel)
> >  - add #include <sys/syscall.h> (thanks to Petr Vorel)
> >  - remove bogus parameters (thanks to Petr Vorel)
> >  - fix #ifdef (thanks to Petr Vorel)
> >  - added Fixes tag (thanks to David Ahern)
> >  - build test with buildroot 2020.08.3 using uclibc 1.0.34
> >
> > v2:
> >  - small correction to subject
> >  - removed IP_CONFIG_HANDLE_AT:=y option since it is not required
> >  - fix indentation in check function
> >  - removed empty lines (thanks to Petr Vorel)
> >  - add #define _GNU_SOURCE in check (thanks to Petr Vorel)
> >  - check only for name_to_handle_at (thanks to Petr Vorel)
> >
> >  configure | 28 ++++++++++++++++++++++++++++
> >  lib/fs.c  | 25 +++++++++++++++++++++++++
> >  2 files changed, 53 insertions(+)
> >
> > diff --git a/configure b/configure
> > index 2c363d3b..179eae08 100755
> > --- a/configure
> > +++ b/configure
> > @@ -202,6 +202,31 @@ EOF
> >      rm -f $TMPDIR/setnstest.c $TMPDIR/setnstest
> >  }
> >
> > +check_name_to_handle_at()
> > +{
> > +    cat >$TMPDIR/name_to_handle_at_test.c <<EOF
> > +#define _GNU_SOURCE
> > +#include <sys/types.h>
> > +#include <sys/stat.h>
> > +#include <fcntl.h>
> > +int main(int argc, char **argv)
> > +{
> > +     struct file_handle *fhp;
> > +     int mount_id, flags, dirfd;
> > +     char *pathname;
> > +     name_to_handle_at(dirfd, pathname, fhp, &mount_id, flags);
> > +     return 0;
> > +}
> > +EOF
> > +    if $CC -I$INCLUDE -o $TMPDIR/name_to_handle_at_test $TMPDIR/name_to_handle_at_test.c >/dev/null 2>&1; then
> > +        echo "yes"
> > +        echo "CFLAGS += -DHAVE_HANDLE_AT" >>$CONFIG
> > +    else
> > +        echo "no"
> > +    fi
> > +    rm -f $TMPDIR/name_to_handle_at_test.c $TMPDIR/name_to_handle_at_test
> > +}
> > +
> >  check_ipset()
> >  {
> >      cat >$TMPDIR/ipsettest.c <<EOF
> > @@ -492,6 +517,9 @@ fi
> >  echo -n "libc has setns: "
> >  check_setns
> >
> > +echo -n "libc has name_to_handle_at: "
> > +check_name_to_handle_at
> > +
> >  echo -n "SELinux support: "
> >  check_selinux
> >
> > diff --git a/lib/fs.c b/lib/fs.c
> > index f161d888..05697a7e 100644
> > --- a/lib/fs.c
> > +++ b/lib/fs.c
> > @@ -25,11 +25,36 @@
> >
> >  #include "utils.h"
> >
> > +#ifndef HAVE_HANDLE_AT
> > +# include <sys/syscall.h>
> > +#endif
> > +
> >  #define CGROUP2_FS_NAME "cgroup2"
> >
> >  /* if not already mounted cgroup2 is mounted here for iproute2's use */
> >  #define MNT_CGRP2_PATH  "/var/run/cgroup2"
> >
> > +
> > +#ifndef HAVE_HANDLE_AT
> > +struct file_handle {
> > +     unsigned handle_bytes;
> > +     int handle_type;
> > +     unsigned char f_handle[];
> > +};
> > +
> > +static int name_to_handle_at(int dirfd, const char *pathname,
> > +     struct file_handle *handle, int *mount_id, int flags)
> > +{
> > +     return syscall(__NR_name_to_handle_at, dirfd, pathname, handle,
> > +                    mount_id, flags);
> > +}
> > +
> > +static int open_by_handle_at(int mount_fd, struct file_handle *handle, int flags)
> > +{
> > +     return syscall(__NR_open_by_handle_at, mount_fd, handle, flags);
> > +}
> > +#endif
> > +
> >  /* return mount path of first occurrence of given fstype */
> >  static char *find_fs_mount(const char *fs_to_find)
> >  {
> >
>
> This causes compile failures if anyone is reusing a tree. It would be
> good to require config.mk to be updated if configure is newer.

Do you mean the config.mk should have a dependency to configure in the
Makefile? Wouldn't that be better as a separate patch?

Thanks
-- 
Heiko

  reply	other threads:[~2021-05-14 10:22 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-08  6:49 [PATCH iproute2-next v3] lib/fs: fix issue when {name,open}_to_handle_at() is not implemented Heiko Thiery
2021-05-08  8:59 ` Petr Vorel
2021-05-09 22:20 ` David Ahern
2021-05-14 10:22   ` Heiko Thiery [this message]
2021-05-14 12:20     ` Petr Vorel
2021-05-14 14:10       ` David Ahern
2021-05-15 16:59         ` Petr Vorel
2021-05-15 18:26           ` David Ahern
2021-05-15 16:58 ` Petr Vorel
2021-05-17 14:45 ` David Ahern
2021-05-17 17:36   ` Petr Vorel
2021-05-18  1:51     ` David Ahern
2021-05-18  7:24       ` Heiko Thiery

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAEyMn7a4Z3U-fUvFLcWmPW3hf-x6LfcTi8BZrcDfhhFF0_9=ow@mail.gmail.com' \
    --to=heiko.thiery@gmail.com \
    --cc=dsahern@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=petr.vorel@gmail.com \
    --cc=stephen@networkplumber.org \
    --cc=zeil@yandex-team.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.