mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Schwartzmeyer <and...@schwartzmeyer.com>
Subject Re: Review Request 66424: Windows: Replaced `_wopen()` with `CreateFileW()` in `os::open()`.
Date Thu, 05 Apr 2018 23:21:45 GMT


> On April 5, 2018, 4:07 p.m., Akash Gupta wrote:
> > 3rdparty/stout/include/stout/os/windows/mktemp.hpp
> > Line 54 (original), 54 (patched)
> > <https://reviews.apache.org/r/66424/diff/1/?file=1992243#file1992243line54>
> >
> >     Huh that's a strange function. Seems like it can cause time check/use race conditions.
We probably want to replace this with the native temp directory functions in the future.

Ha, I agree. It's listed in MESOS-8682 so it'll get done eventually.


> On April 5, 2018, 4:07 p.m., Akash Gupta wrote:
> > 3rdparty/stout/include/stout/os/windows/open.hpp
> > Lines 37 (patched)
> > <https://reviews.apache.org/r/66424/diff/1/?file=1992244#file1992244line40>
> >
> >     I *think* FILE_FLAG_WRITE_THROUGH == O_SYNC.

It's... similar, but I looked at the use-cases and I think we're more likely to introduce
unintended behaior by trying to guess what the user wants here.


> On April 5, 2018, 4:07 p.m., Akash Gupta wrote:
> > 3rdparty/stout/include/stout/os/windows/open.hpp
> > Lines 45 (patched)
> > <https://reviews.apache.org/r/66424/diff/1/?file=1992244#file1992244line48>
> >
> >     I believe the default behavior(`SECURITY_ATTRIBUTES == NULL`) is to inherit
from the parent directory / access token. We should ask around on what's the proper settings
for security.

Don't let me forget to file/update/mention the permissions issue.


> On April 5, 2018, 4:07 p.m., Akash Gupta wrote:
> > 3rdparty/stout/include/stout/os/windows/open.hpp
> > Lines 61 (patched)
> > <https://reviews.apache.org/r/66424/diff/1/?file=1992244#file1992244line64>
> >
> >     It's up to you, but I find it clearer to have a switch statement on the bitfields
like this:
> >     ```
> >     switch(oflag & (O_RDONLY | O_WRONLY | O_RDWR)) {
> >       case O_RDONLY:
> >       case O_WRONLY:
> >       case O_RDWR:
> >       default:
> >     }
> >     ```

Only problem is that O_RDONLY is 0, so case O_RDONLY will never execute. Some brilliant programmer
somewhere though that 0 would work great as a bit flag.


> On April 5, 2018, 4:07 p.m., Akash Gupta wrote:
> > 3rdparty/stout/include/stout/os/windows/open.hpp
> > Lines 73 (patched)
> > <https://reviews.apache.org/r/66424/diff/1/?file=1992244#file1992244line76>
> >
> >     Same thing as above. I think it's more import on this one because there's techically
8 cases for `O_CREAT`, `O_EXCL`, `O_TRUNC`, but POSIX and Windows only have defined behavior
for 5 of them, so you can explicitly mention the undefined behavior cases like this:
> >     
> >     ```
> >     switch(oflag & (O_CREAT | O_EXCL | O_TRUNC)) {
> >       case O_CREAT | O_EXCL:
> >       case O_CREAT | O_EXCL | O_TRUNC :
> >        // Ignore O_TRUNC if we get O_CREAT | O_EXCL
> >        create = CREATE_NEW; break;
> >       case ...:
> >     }

Yeah I was not a huge fan of these if/else chains. Thanks.


- Andrew


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/66424/#review200579
-----------------------------------------------------------


On April 3, 2018, 10:47 p.m., Andrew Schwartzmeyer wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/66424/
> -----------------------------------------------------------
> 
> (Updated April 3, 2018, 10:47 p.m.)
> 
> 
> Review request for mesos, Akash Gupta, Eric Mumau, John Kordich, Joseph Wu, and Michael
Park.
> 
> 
> Bugs: MESOS-8673
>     https://issues.apache.org/jira/browse/MESOS-8673
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Instead of using the CRT implementation of `_wopen()` for the
> `os::open()` API, we now use the Windows API `CreateFileW()`, mapping
> each of the Linux `open()` flags to their semantic equivalents. This
> will make implementing overlapped I/O possible, and is a step toward
> removing the use of integer file descriptors on Windows.
> 
> Note that instead of redefining the C flags like `O_RDONLY`, we just
> use them directly in our mapping logic, and set the used but
> unsupported flags to zero.
> 
> This change uncovered several bugs such as incorrect access flags, and
> used-but-not-included headers.
> 
> We currently ignore creation permissions as they will be handled in a
> broader project to map permissions to Windows correctly.
> 
> 
> Diffs
> -----
> 
>   3rdparty/stout/include/stout/net.hpp d2992c05b221ea90dae1c06d27753932f7411925 
>   3rdparty/stout/include/stout/os/windows/fcntl.hpp bf8c38acad60f9b0eb752053dcd53a9fda7b8bfa

>   3rdparty/stout/include/stout/os/windows/mktemp.hpp 5c775c45c415d9ddd6a80ab814fb55475e9f871e

>   3rdparty/stout/include/stout/os/windows/open.hpp PRE-CREATION 
>   3rdparty/stout/include/stout/windows.hpp 1bfcdf4a5c097cc6d2293396ce39c8ad2c9ec993 
> 
> 
> Diff: https://reviews.apache.org/r/66424/diff/1/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Andrew Schwartzmeyer
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message