Re: [Qemu-devel] [PATCH 08/13] 9p: darwin: Ignore O_{NOATIME, DIRECT}
> > Please don't kill the spaces. > Sorry, will undo. My editor has strong opinions about styling. >> +#ifndef CONFIG_DARWIN >> +{P9_DOTL_NOATIME, O_NOATIME}, >> +/* On Darwin, we could map to F_NOCACHE, which is >> + similar, but doesn't quite have the same >> + semantics. However, we don't support O_DIRECT > > But are these semantics worse than dumping the flag ? > I don't know. I looked around a bit and most OS abstraction layers tend to not do this translation automatically: https://github.com/libuv/libuv/issues/1600 >> + even on linux at the moment, so we just ignore >> + it here. */ > > Yeah, and I doubt we'll ever support it on linux either. But, > anyway, why filter these out ? Do they cause a build break ? > Yes, neither O_DIRECT nor O_NOATIME are defined on Darwin, so trying to use them causes errors.
Re: [Qemu-devel] [PATCH 08/13] 9p: darwin: Ignore O_{NOATIME, DIRECT}
On Sat, 26 May 2018 01:23:10 -0400 k...@juliacomputing.com wrote: > From: Keno Fischer > > Signed-off-by: Keno Fischer > --- > hw/9pfs/9p.c | 37 +++-- > 1 file changed, 23 insertions(+), 14 deletions(-) > > diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c > index 49654ae..f5f00aa 100644 > --- a/hw/9pfs/9p.c > +++ b/hw/9pfs/9p.c > @@ -115,20 +115,27 @@ static int dotl_to_open_flags(int flags) > int oflags = flags & O_ACCMODE; > > DotlOpenflagMap dotl_oflag_map[] = { > -{ P9_DOTL_CREATE, O_CREAT }, > -{ P9_DOTL_EXCL, O_EXCL }, > -{ P9_DOTL_NOCTTY , O_NOCTTY }, > -{ P9_DOTL_TRUNC, O_TRUNC }, > -{ P9_DOTL_APPEND, O_APPEND }, > -{ P9_DOTL_NONBLOCK, O_NONBLOCK } , > -{ P9_DOTL_DSYNC, O_DSYNC }, > -{ P9_DOTL_FASYNC, FASYNC }, > -{ P9_DOTL_DIRECT, O_DIRECT }, > -{ P9_DOTL_LARGEFILE, O_LARGEFILE }, > -{ P9_DOTL_DIRECTORY, O_DIRECTORY }, > -{ P9_DOTL_NOFOLLOW, O_NOFOLLOW }, > -{ P9_DOTL_NOATIME, O_NOATIME }, > -{ P9_DOTL_SYNC, O_SYNC }, > +{P9_DOTL_CREATE, O_CREAT}, > +{P9_DOTL_EXCL, O_EXCL}, > +{P9_DOTL_NOCTTY, O_NOCTTY}, > +{P9_DOTL_TRUNC, O_TRUNC}, > +{P9_DOTL_APPEND, O_APPEND}, > +{P9_DOTL_NONBLOCK, O_NONBLOCK}, > +{P9_DOTL_DSYNC, O_DSYNC}, > +{P9_DOTL_FASYNC, FASYNC}, Please don't kill the spaces. > +#ifndef CONFIG_DARWIN > +{P9_DOTL_NOATIME, O_NOATIME}, > +/* On Darwin, we could map to F_NOCACHE, which is > + similar, but doesn't quite have the same > + semantics. However, we don't support O_DIRECT But are these semantics worse than dumping the flag ? > + even on linux at the moment, so we just ignore > + it here. */ Yeah, and I doubt we'll ever support it on linux either. But, anyway, why filter these out ? Do they cause a build break ? > +{P9_DOTL_DIRECT, O_DIRECT}, > +#endif > +{P9_DOTL_LARGEFILE, O_LARGEFILE}, > +{P9_DOTL_DIRECTORY, O_DIRECTORY}, > +{P9_DOTL_NOFOLLOW, O_NOFOLLOW}, > +{P9_DOTL_SYNC, O_SYNC}, > }; > > for (i = 0; i < ARRAY_SIZE(dotl_oflag_map); i++) { > @@ -156,10 +163,12 @@ static int get_dotl_openflags(V9fsState *s, int oflags) > */ > flags = dotl_to_open_flags(oflags); > flags &= ~(O_NOCTTY | O_ASYNC | O_CREAT); > +#ifndef CONFIG_DARWIN > /* > * Ignore direct disk access hint until the server supports it. > */ > flags &= ~O_DIRECT; > +#endif > return flags; > } >
[Qemu-devel] [PATCH 08/13] 9p: darwin: Ignore O_{NOATIME, DIRECT}
From: Keno FischerSigned-off-by: Keno Fischer --- hw/9pfs/9p.c | 37 +++-- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 49654ae..f5f00aa 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -115,20 +115,27 @@ static int dotl_to_open_flags(int flags) int oflags = flags & O_ACCMODE; DotlOpenflagMap dotl_oflag_map[] = { -{ P9_DOTL_CREATE, O_CREAT }, -{ P9_DOTL_EXCL, O_EXCL }, -{ P9_DOTL_NOCTTY , O_NOCTTY }, -{ P9_DOTL_TRUNC, O_TRUNC }, -{ P9_DOTL_APPEND, O_APPEND }, -{ P9_DOTL_NONBLOCK, O_NONBLOCK } , -{ P9_DOTL_DSYNC, O_DSYNC }, -{ P9_DOTL_FASYNC, FASYNC }, -{ P9_DOTL_DIRECT, O_DIRECT }, -{ P9_DOTL_LARGEFILE, O_LARGEFILE }, -{ P9_DOTL_DIRECTORY, O_DIRECTORY }, -{ P9_DOTL_NOFOLLOW, O_NOFOLLOW }, -{ P9_DOTL_NOATIME, O_NOATIME }, -{ P9_DOTL_SYNC, O_SYNC }, +{P9_DOTL_CREATE, O_CREAT}, +{P9_DOTL_EXCL, O_EXCL}, +{P9_DOTL_NOCTTY, O_NOCTTY}, +{P9_DOTL_TRUNC, O_TRUNC}, +{P9_DOTL_APPEND, O_APPEND}, +{P9_DOTL_NONBLOCK, O_NONBLOCK}, +{P9_DOTL_DSYNC, O_DSYNC}, +{P9_DOTL_FASYNC, FASYNC}, +#ifndef CONFIG_DARWIN +{P9_DOTL_NOATIME, O_NOATIME}, +/* On Darwin, we could map to F_NOCACHE, which is + similar, but doesn't quite have the same + semantics. However, we don't support O_DIRECT + even on linux at the moment, so we just ignore + it here. */ +{P9_DOTL_DIRECT, O_DIRECT}, +#endif +{P9_DOTL_LARGEFILE, O_LARGEFILE}, +{P9_DOTL_DIRECTORY, O_DIRECTORY}, +{P9_DOTL_NOFOLLOW, O_NOFOLLOW}, +{P9_DOTL_SYNC, O_SYNC}, }; for (i = 0; i < ARRAY_SIZE(dotl_oflag_map); i++) { @@ -156,10 +163,12 @@ static int get_dotl_openflags(V9fsState *s, int oflags) */ flags = dotl_to_open_flags(oflags); flags &= ~(O_NOCTTY | O_ASYNC | O_CREAT); +#ifndef CONFIG_DARWIN /* * Ignore direct disk access hint until the server supports it. */ flags &= ~O_DIRECT; +#endif return flags; } -- 2.8.1