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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox