Commit Graph
126 Commits
Author SHA1 Message Date
Justin 97e4973ce5 Merge pull request #91 from Microsoft/detach
Added DetachVhd
2018-08-23 15:24:21 -07:00
John Howard 275ee76c20 Add DetachVhd entrypoint
Signed-off-by: John Howard <jhoward@microsoft.com>
2018-08-23 15:01:31 -07:00
Justin 399410cd8c Merge pull request #92 from Microsoft/dos2unix
Convert all files to unix line endings
2018-08-23 14:58:28 -07:00
John Howard 09c0aff8d5 Convert all files to unix line endings
Signed-off-by: John Howard <jhoward@microsoft.com>
2018-08-23 14:56:23 -07:00
Justin 78a084671d Merge pull request #88 from jiria/fileattributes_size
Update FileAttributes size to work across all platforms
2018-08-06 13:04:50 -07:00
Jiri Appl 5380df2ba5 Changes based on PR 2018-08-03 12:01:41 -07:00
Jiri Appl 350b9857de Update FileAttributes size to work on 32 bit platforms 2018-08-02 10:42:57 -07:00
John Starks a6d595ae73 Merge pull request #80 from nanomsg/norace2
fixes #67 DialPipe problem with multiple calls / waiting for busy pipe
2018-07-19 15:37:18 -07:00
Garrett D'Amore effecfb659 Reduce the timeout to 2 seconds, and close the client handle.
We can safely close the client handle, because the server side
is not closed, and thsi keeps our hold on the pipe instance.
2018-07-18 12:07:29 -07:00
John Starks 67921128fb Merge pull request #82 from jstarks/pipe_message_mode
Support pipe message read mode
2018-06-25 13:58:01 -07:00
John Starks 3eabd1969d Clean up message mode pipe handling, add test 2018-06-25 09:31:55 -07:00
Garrett D'Amore ecd994be06 fixes #67 DialPipe problem with multiple calls / waiting for busy pipe
This changes a few things to try to ensure that we never wind up with
a result of ERROR_FILE_NOT_FOUND, due to a race between closing the
last pipe instance and opening the next.

First we keep an "open" client instance (unused) while the listener
is open, so that we are guaranteed to always have an active pipe
instance.  This means attempts to open while no other instances exist
result in ERROR_PIPE_BUSY instead of ERROR_FILE_NOT_FOUND.

Second we have changed the loop for dialing to eliminate a race condition
that is more or less inherent in WaitNamedPipe when synchronizing with
CreateFile.  The real timeout needs to be some larger value than the
WaitNamedPipe timeout, and furthermore WaitNamedPipe is not very nice
with the Go runtime, since it is a blocking system call.  Instead we
just put the goroutine to sleep for 10 milliseconds, and keep retrying
the CreateFile until the maximum timeout is reached.  If no timeout is
specified we assume a reasonable and large default of 5 seconds, which is
similar to a TCP connection timeout.

This isn't perfect, as a client attempting to connect to an extremely
busy pipe server can be starved out by other clients coming in while
it is in that brief sleep, but this potential race was already present
with WaitNamedPipe.  The numerous retries (by default 500 retries!)
mean its pretty unlikely to occur, and if a single client hits the
race once, it has an excellent chance of getting in the next cycle.

(A real "fix" that is completely race free and fair would require
changes in the underlying Named Pipe implementation, or some other
kind of external coordination.)
2018-06-24 11:39:09 -07:00
Tejaswini Duggaraju 3f914f36b8 Tread ERROR_MORE_DATA as success and return the remaining n number of bytes required to be read. 2018-05-25 13:37:14 -07:00
Tejaswini Duggaraju 211d6ebb39 Allow for message pipes in message readmode for Windows named pipes. 2018-05-25 12:13:39 -07:00
John Howard ab35fc04b6 Merge pull request #77 from johnstep/fix-valid-sid-test
Call Fatalf to use the format specifier
2018-05-01 10:05:46 -07:00
John Stephens 1891e2bbff Call Fatalf to use the format specifier
Signed-off-by: John Stephens <johnstep@docker.com>
2018-04-30 16:52:55 -07:00
Darren Stahl 7da180ee92 Merge pull request #71 from darrenstahlmsft/RemoveTimeBeginPeriod
Remove workaround to perf issues in go1.6
2018-01-16 14:35:03 -08:00
Darren Stahl 6f4ae360a5 Remove workaround to perf issues in go1.6
Starting in go1.9, Golang lowers the timer frequency when not required
reducing CPU usage. This workaround prevents Golang from doing so,
and since the initial issue was fixed, I see no perf regressions.
This does not need to be conditional based on Golang verison, as the issue
being worked around was only in go1.6.

Signed-off-by: Darren Stahl <darst@microsoft.com>
2018-01-09 14:51:38 -08:00
John Howard b7c3cf0d12 Merge pull request #70 from jstarks/connect_race
pipe: Resolve race between close and connect
2018-01-09 13:36:25 -08:00
John Starks ae842e48e0 pipe: Resolve race between close and connect
This change resolves the issue where Accept() returns ERROR_NO_DATA
because the client closes the connection immediately. It resolves
the race by ignoring that particular connection and waiting on a
new one.
2018-01-09 13:28:13 -08:00
John Starks 78439966b3 Merge pull request #65 from darrenstahlmsft/waitGroup
Prevent adding to a sync.WaitGroup that has a waiter
2017-08-04 13:09:54 -07:00
Darren Stahl 3d52dc4a97 Test bug: Fix server connections not closing in TestEchoWithMessaging
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-08-04 10:24:26 -07:00
Darren Stahl c57b87d6d4 Prevent adding to a sync.WaitGroup that has a waiter
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-08-03 15:26:45 -07:00
John Starks 036d9d8653 Merge pull request #64 from jstarks/tar_ea
Add support for EAs to Windows tars
2017-08-02 11:48:47 -07:00
John Starks 353f5972cb Merge pull request #63 from fsouza/fix-data-race
Copy pointer to prevent data race on pipe connection
2017-08-02 11:45:34 -07:00
John Starks 42a2f45ea5 Add support for EAs to Windows tars 2017-08-01 17:24:15 -07:00
Francisco Souza 6f65f5291e Copy pointer to prevent data race on pipe connection
Closes #62.
2017-07-25 23:33:44 -04:00
Darren Stahl 7ff89941bc Merge pull request #59 from timou/master
Bool is not atomic
2017-07-24 19:50:09 -07:00
Tim Ebringer 73020a3110 Bool is not atomic
The Go race detector doesn't like concurrent access to bool. This change
moves the bool to use atomicBool, and extends atomicBool with the swap()
method, to handle conditional use.
2017-07-24 21:04:39 -04:00
Darren Stahl 3e5ddb06eb Merge pull request #61 from mlaventure/prevent-deadlock
Don't increment the wait count if the file is closing
2017-07-24 15:26:06 -07:00
Kenfe-Mickael Laventure 1ba55a6b1b Don't increment the wait count if the file is closing
This prevent a deadlock if `prepareIo()` is called on a closing file as
`Done()` would never been called afterwards.

Signed-off-by: Kenfe-Mickael Laventure <mickael.laventure@gmail.com>
2017-07-19 18:15:28 +02:00
John Starks c4dc1301f1 Merge pull request #56 from swernli/master
Adding simple CreateVhdx method
2017-07-11 21:46:15 -07:00
Stefan Wernli 24d09c6f4b Adding VHD library with simple function, updating mksyscall
Adds the basic structs for VHD function calls and includes one simple wrapper for VHDX creation.
This includes the updated version of mksyscall_windows.go, which previously assumed any api that doesn't end in "W" must not be unicode, and encodes the strings incorrectly. This hard-codes for unicode support and generates the syscalls from there.
2017-07-11 21:12:04 -07:00
Stefan Wernli 1bbb8c8d24 Copying mksyscall_windows from golang 2017-07-11 20:18:55 -07:00
Darren Stahl f533f7a102 Merge pull request #54 from darrenstahlmsft/NoCopyMemory
RtlCopyMemory is not available on Nanoserver use builtin copy instead
2017-05-23 17:36:31 -07:00
Darren Stahl 18d7347919 RtlCopyMemory is not available on Nanoserver use builtin copy instead
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-05-23 17:26:29 -07:00
Darren Stahl 706941bedd Merge pull request #53 from darrenstahlmsft/wgDone
Move f.wg.Done() to Read and Write to avoid leaking handles
2017-05-19 16:10:15 -07:00
Darren Stahl a64f284add Move f.wg.Done() to Read and Write to avoid leaking handles
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-05-19 15:42:58 -07:00
John Starks d311c76e77 Merge pull request #51 from darrenstahlmsft/NoCGO
Remove cgo as a dependency added by #49
2017-05-08 14:01:43 -07:00
John Starks 518e6ebd8b Merge pull request #50 from Microsoft/Timeout
Apply read and write deadlines to pending IO
2017-05-08 13:59:22 -07:00
Darren Stahl de045f765f Remove cgo as a dependency added by #48
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-05-05 16:39:41 -07:00
Darren Stahl 899dbf3ba5 Apply read and write deadlines to pending IO
In order to upgrade to go1.8 all IO operations
including previous pending IO must have the deadline
set when SetReadDeadline or SetWriteDeadline is called

Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-05-05 14:53:42 -07:00
Darren Stahl 2a0317319a Adding failing tests for deadlines on pending IO
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-05-05 14:53:42 -07:00
John Starks 13736c3252 Merge pull request #48 from darrenstahlmsft/Go1.8
Added runtime.KeepAlive for the new stricter 1.8 GC
2017-05-03 12:50:31 -07:00
Darren Stahl e9792bc98c Added runtime.KeepAlive for the new stricter 1.8 GC
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-05-03 12:47:12 -07:00
Darren Stahl 23ad5a714c Allocate securityDescriptor in C memory
Signed-off-by: Darren Stahl <darst@microsoft.com>
2017-05-03 12:46:54 -07:00
John Howard f3b1913901 Merge pull request #43 from simonferquel/deadlock-on-concurrent-rw
Flush outgoing content before sending EOF message
2017-04-25 19:53:07 -07:00
Simon Ferquel 7c7d6b461c Flush file buffers on CloseWrite
This forces any pending data to be sent to the remote party before
emitting the 0-length EOF message, to make sure it appears as a seperate
message.

This fixes the "TestEchoWithMessaging" test

Signed-off-by: Simon Ferquel <simon.ferquel@docker.com>
2017-03-17 16:57:20 +01:00
Simon Ferquel 203d18a858 Introduces a test that does an echo using message mode named pipes
This exhibit a deadlock we see sometimes when using docker cli connected
to a daemon through a named pipe with some data in the input stream (ie:
`echo "hello" | docker run ... `)

The problem seems to be that the EOF 0-length message is collapsed with
the previous message, if the buffer associated with the named pipe is
not previously flushed

Signed-off-by: Simon Ferquel <simon.ferquel@docker.com>
2017-03-17 16:43:53 +01:00
Stefan J. Wernli fff283ad51 Merge pull request #40 from Microsoft/altdatastream
Fix filename length check alt data stream
2017-01-31 16:43:30 -08:00