Message ID | 823a49a8771e3214dc953ed9d7facd02df3060e4.1529196703.git.keno@juliacomputing.com |
---|---|
State | New |
Headers | show |
Series | 9p: Add support for Darwin | expand |
On Sat, 16 Jun 2018 20:56:50 -0400 Keno Fischer <keno@juliacomputing.com> wrote: > Darwin doesn't have either of these flags. Darwin does have > F_NOCACHE, which is similar to O_DIRECT, but has different > enough semantics that other projects don't generally map > them automatically. In any case, we don't support O_DIRECT > on Linux at the moment either. > > Signed-off-by: Keno Fischer <keno@juliacomputing.com> > --- Reviewed-by: Greg Kurz <groug@kaod.org> > hw/9pfs/9p.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c > index 06139c9..e650459 100644 > --- a/hw/9pfs/9p.c > +++ b/hw/9pfs/9p.c > @@ -123,11 +123,18 @@ static int dotl_to_open_flags(int flags) > { 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_NOATIME, O_NOATIME }, > { P9_DOTL_SYNC, O_SYNC }, > }; > > @@ -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; > } >
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 06139c9..e650459 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -123,11 +123,18 @@ static int dotl_to_open_flags(int flags) { 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_NOATIME, O_NOATIME }, { P9_DOTL_SYNC, O_SYNC }, }; @@ -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; }
Darwin doesn't have either of these flags. Darwin does have F_NOCACHE, which is similar to O_DIRECT, but has different enough semantics that other projects don't generally map them automatically. In any case, we don't support O_DIRECT on Linux at the moment either. Signed-off-by: Keno Fischer <keno@juliacomputing.com> --- hw/9pfs/9p.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)