On Sun, 6 Feb 2022 20:10:23 -0500 Will Cohen <wwco...@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é <f4...@amsat.org> > wrote: > > > On 6/2/22 21:07, Will Cohen wrote: > > > From: Keno Fischer <k...@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 <k...@juliacomputing.com> > > > Signed-off-by: Michael Roitzsch <reactorcont...@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 <wwco...@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. > >