qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 09/11] 9p: darwin: Implement compatibility for mknodat


From: Greg Kurz
Subject: Re: [PATCH v4 09/11] 9p: darwin: Implement compatibility for mknodat
Date: Mon, 7 Feb 2022 09:47:17 +0100

On Sun, 6 Feb 2022 20:10:23 -0500
Will Cohen <wwcohen@gmail.com> wrote:

> This patch set currently places it in 9p-util only because 9p is the only
> place where this issue seems to have come up so far and we were wary of
> editing files too far afield, but I have no attachment to its specific
> location!
> 

Inline comments are preferred on qemu-devel. Please don't top post !
This complicates the review a lot.

This is indeed a good candidate for osdep. This being said, unless there's
some other user in the QEMU code base, it is acceptable to leave it under
9pfs.

> On Sun, Feb 6, 2022 at 4:21 PM Philippe Mathieu-Daudé <f4bug@amsat.org>
> wrote:
> 
> > On 6/2/22 21:07, Will Cohen wrote:
> > > From: Keno Fischer <keno@juliacomputing.com>
> > >
> > > Darwin does not support mknodat. However, to avoid race conditions
> > > with later setting the permissions, we must avoid using mknod on
> > > the full path instead. We could try to fchdir, but that would cause
> > > problems if multiple threads try to call mknodat at the same time.
> > > However, luckily there is a solution: Darwin includes a function
> > > that sets the cwd for the current thread only.
> > > This should suffice to use mknod safely.
> > >
> > > This function (pthread_fchdir_np) is protected by a check in
> > > meson in a patch later in tihs series.
> > >
> > > Signed-off-by: Keno Fischer <keno@juliacomputing.com>
> > > Signed-off-by: Michael Roitzsch <reactorcontrol@icloud.com>
> > > [Will Cohen: - Adjust coding style
> > >               - Replace clang references with gcc
> > >               - Note radar filed with Apple for missing syscall
> > >               - Replace direct syscall with pthread_fchdir_np and
> > >                 adjust patch notes accordingly]
> > > Signed-off-by: Will Cohen <wwcohen@gmail.com>
> > > ---
> > >   hw/9pfs/9p-local.c       |  5 +++--
> > >   hw/9pfs/9p-util-darwin.c | 27 +++++++++++++++++++++++++++
> > >   hw/9pfs/9p-util-linux.c  |  5 +++++
> > >   hw/9pfs/9p-util.h        |  2 ++
> > >   4 files changed, 37 insertions(+), 2 deletions(-)
> >
> > > diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h
> > > index 8e610ad224..f6fed963bf 100644
> > > --- a/hw/9pfs/9p-util.h
> > > +++ b/hw/9pfs/9p-util.h
> > > @@ -97,6 +97,8 @@ ssize_t flistxattrat_nofollow(int dirfd, const char
> > *filename,
> > >   ssize_t fremovexattrat_nofollow(int dirfd, const char *filename,
> > >                                   const char *name);
> > >
> > > +int qemu_mknodat(int dirfd, const char *filename, mode_t mode, dev_t
> > dev);
> >
> > I think this belong to "osdep.h" & os-posix.c.
> >




reply via email to

[Prev in Thread] Current Thread [Next in Thread]