Re: [Qemu-devel] [PATCH 08/13] 9p: darwin: Ignore O_{NOATIME, DIRECT}

2018-05-31 Thread Keno Fischer
>
> 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}

2018-05-29 Thread Greg Kurz
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}

2018-05-25 Thread keno
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},
+#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