From: "Darrick J. Wong" <djwong@kernel.org>
To: Christian Brauner <christian.brauner@ubuntu.com>
Cc: Christoph Hellwig <hch@lst.de>,
fstests@vger.kernel.org, David Howells <dhowells@redhat.com>
Subject: Re: [PATCH v9 1/4] generic/631: add test for detached mount propagation
Date: Thu, 18 Mar 2021 08:57:19 -0700 [thread overview]
Message-ID: <20210318155719.GG22097@magnolia> (raw)
In-Reply-To: <20210318151444.ukfj4aqeoq5ecmwn@wittgenstein>
On Thu, Mar 18, 2021 at 04:14:44PM +0100, Christian Brauner wrote:
> On Thu, Mar 18, 2021 at 08:02:30AM -0700, Darrick J. Wong wrote:
> > On Thu, Mar 18, 2021 at 07:23:10AM +0100, Christoph Hellwig wrote:
> > > > +/* open_tree() */
> > > > +#ifndef OPEN_TREE_CLONE
> > > > +#define OPEN_TREE_CLONE 1
> > > > +#endif
> > > > +
> > > > +#ifndef OPEN_TREE_CLOEXEC
> > > > +#define OPEN_TREE_CLOEXEC O_CLOEXEC
> > > > +#endif
> > > > +
> > > > +#ifndef __NR_open_tree
> > > > + #if defined __alpha__
> > > > + #define __NR_open_tree 538
> > > > + #elif defined _MIPS_SIM
> > > > + #if _MIPS_SIM == _MIPS_SIM_ABI32 /* o32 */
> > > > + #define __NR_open_tree 4428
> > > > + #endif
> > > > + #if _MIPS_SIM == _MIPS_SIM_NABI32 /* n32 */
> > > > + #define __NR_open_tree 6428
> > > > + #endif
> > > > + #if _MIPS_SIM == _MIPS_SIM_ABI64 /* n64 */
> > > > + #define __NR_open_tree 5428
> > > > + #endif
> > > > + #elif defined __ia64__
> > > > + #define __NR_open_tree (428 + 1024)
> > > > + #else
> > > > + #define __NR_open_tree 428
> > > > + #endif
> > > > +#endif
> > > > +
> > > > +/* move_mount() */
> > > > +#ifndef MOVE_MOUNT_F_EMPTY_PATH
> > > > +#define MOVE_MOUNT_F_EMPTY_PATH 0x00000004 /* Empty from path permitted */
> > > > +#endif
> > > > +
> > > > +#ifndef __NR_move_mount
> > > > + #if defined __alpha__
> > > > + #define __NR_move_mount 539
> > > > + #elif defined _MIPS_SIM
> > > > + #if _MIPS_SIM == _MIPS_SIM_ABI32 /* o32 */
> > > > + #define __NR_move_mount 4429
> > > > + #endif
> > > > + #if _MIPS_SIM == _MIPS_SIM_NABI32 /* n32 */
> > > > + #define __NR_move_mount 6429
> > > > + #endif
> > > > + #if _MIPS_SIM == _MIPS_SIM_ABI64 /* n64 */
> > > > + #define __NR_move_mount 5429
> > > > + #endif
> > > > + #elif defined __ia64__
> > > > + #define __NR_move_mount (428 + 1024)
> > > > + #else
> > > > + #define __NR_move_mount 429
> > > > + #endif
> > > > +#endif
> > > > +
> > > > +static inline int sys_open_tree(int dfd, const char *filename, unsigned int flags)
> > > > +{
> > > > + return syscall(__NR_open_tree, dfd, filename, flags);
> > > > +}
> > > > +
> > > > +static inline int sys_move_mount(int from_dfd, const char *from_pathname, int to_dfd,
> > > > + const char *to_pathname, unsigned int flags)
> > > > +{
> > > > + return syscall(__NR_move_mount, from_dfd, from_pathname, to_dfd, to_pathname, flags);
> > > > +}
> > >
> > > Not directly new in your patch, but I wish we'd have a central header
> > > for missing UAPI bits in xfstests instead of spreading it over
> > > various files.
> >
> > FWIW if you (or anyone else) /does/ create a src/linux_calls.h or
> > similar for things like this, I will totally start adding things to it
> > instead of scattering them everywhere. :)
>
> I do usually have in my C projects two .h files (without corresponding
> .c files):
>
> 1. syscall_numbers.h
> https://github.com/lxc/lxc/blob/master/src/lxc/syscall_numbers.h
>
> Where syscall_numbers defines the missing syscall numbers. For new
> syscalls in the style exhibited in this patch and for legacy syscalls
> it's a bit more nasty (i.e. syscalls before we unified numbering [apart
> from alpha]):
>
> #ifndef __NR_memfd_create
> #if defined __i386__
> #define __NR_memfd_create 356
> #elif defined __x86_64__
> #define __NR_memfd_create 319
> #elif defined __arm__
> #define __NR_memfd_create 385
> #elif defined __aarch64__
> #define __NR_memfd_create 279
> #elif defined __s390__
> #define __NR_memfd_create 350
> #elif defined __powerpc__
> #define __NR_memfd_create 360
> #elif defined __riscv
> #define __NR_memfd_create 279
> #elif defined __sparc__
> #define __NR_memfd_create 348
> #elif defined __blackfin__
> #define __NR_memfd_create 390
> #elif defined __ia64__
> #define __NR_memfd_create 1340
> #elif defined _MIPS_SIM
> #if _MIPS_SIM == _MIPS_SIM_ABI32
> #define __NR_memfd_create 4354
> #endif
> #if _MIPS_SIM == _MIPS_SIM_NABI32
> #define __NR_memfd_create 6318
> #endif
> #if _MIPS_SIM == _MIPS_SIM_ABI64
> #define __NR_memfd_create 5314
> #endif
> #else
> #define -1
> #warning "__NR_memfd_create not defined for your architecture"
> #endif
> #endif
>
> 2. syscall_wrappers.h
> https://github.com/lxc/lxc/blob/master/src/lxc/syscall_wrappers.h
>
> Where syscall_wrappers.h defines minimal wrappers for missing
> syscalls and their corresponding types.
>
> #ifndef HAVE_SYS_SIGNALFD_H
> struct signalfd_siginfo {
> uint32_t ssi_signo;
> int32_t ssi_errno;
> int32_t ssi_code;
> uint32_t ssi_pid;
> uint32_t ssi_uid;
> int32_t ssi_fd;
> uint32_t ssi_tid;
> uint32_t ssi_band;
> uint32_t ssi_overrun;
> uint32_t ssi_trapno;
> int32_t ssi_status;
> int32_t ssi_int;
> uint64_t ssi_ptr;
> uint64_t ssi_utime;
> uint64_t ssi_stime;
> uint64_t ssi_addr;
> uint8_t __pad[48];
> };
>
> static inline int signalfd(int fd, const sigset_t *mask, int flags)
> {
> int retval;
>
> retval = syscall(__NR_signalfd4, fd, mask, _NSIG / 8, flags);
> #ifdef __NR_signalfd
> if (errno == ENOSYS && flags == 0)
> retval = syscall(__NR_signalfd, fd, mask, _NSIG / 8);
> #endif
>
> return retval;
> }
> #endif
>
> Something like this might also work for xfstests.
Yeah, not 5 minutes later someone emailed me a bug report that fstests
doesn't build on Ubuntu 16.04 due to its kernel headers not knowing
about fsxattr, so I guess I'll have a patch out adding this exact header
file later today.
--D
>
> Christian
next prev parent reply other threads:[~2021-03-18 15:58 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-16 10:36 [PATCH v9 0/4 REBASED] fstests: add idmapped mounts tests Christian Brauner
2021-03-16 10:36 ` [PATCH v9 1/4] generic/631: add test for detached mount propagation Christian Brauner
2021-03-18 6:23 ` Christoph Hellwig
2021-03-18 15:02 ` Darrick J. Wong
2021-03-18 15:14 ` Christian Brauner
2021-03-18 15:57 ` Darrick J. Wong [this message]
2021-03-18 16:31 ` Darrick J. Wong
2021-03-21 14:28 ` Eryu Guan
2021-03-22 10:00 ` Christian Brauner
2021-03-16 10:36 ` [PATCH v9 3/4] xfs/529: quotas and idmapped mounts Christian Brauner
2021-03-18 6:24 ` Christoph Hellwig
2021-03-21 14:42 ` Eryu Guan
2021-03-22 10:11 ` Christian Brauner
2021-03-16 10:36 ` [PATCH v9 4/4] xfs/530: quotas on " Christian Brauner
2021-03-18 6:24 ` Christoph Hellwig
2021-03-21 14:51 ` Eryu Guan
2021-03-22 12:25 ` Christian Brauner
[not found] ` <20210316103627.2954121-3-christian.brauner@ubuntu.com>
2021-03-18 6:23 ` [PATCH v9 2/4] generic/632: add fstests for " Christoph Hellwig
2021-03-21 14:26 ` [PATCH v9 0/4 REBASED] fstests: add idmapped mounts tests Eryu Guan
2021-03-21 15:32 ` Christian Brauner
2021-03-22 2:37 ` Eryu Guan
2021-03-22 9:49 ` Christian Brauner
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=20210318155719.GG22097@magnolia \
--to=djwong@kernel.org \
--cc=christian.brauner@ubuntu.com \
--cc=dhowells@redhat.com \
--cc=fstests@vger.kernel.org \
--cc=hch@lst.de \
/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.