A toolkit for building secure, portable and lean operating systems for containers
Go to file
David Sheets 821b329f7b transfused: add separate FUSE notify channel to avoid deadlock
This adds a new notify channel to the transfuse protocol. It is not
optional yet but could be made to be optional. A notify protocol and
notify channel are required because writing FUSE response messages to
the FUSE device has different semantics from writing asynchronous
notifications. In particular, response message writes only error on
malformed messages, do not take locks, and do not block. In contrast,
asynchronous notifications can error under normal conditions
(e.g. invalidating a cache entry that doesn't exist), can take locks
during the write call, and can block.

If responses and notifications occur in the same thread, the file system
can become deadlocked when syscalls lock resources waiting for a
response and a notification is written that blocks attempting to acquire
those same locks. The response that would unlock the contended lock
could be queued behind the notification write but the notification write
can't unblock until the response is written in the future. This patch
enables file systems to avoid that fate by offering a secondary channel
on which to send notifications.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-22 13:35:57 +01:00
alpine transfused: add separate FUSE notify channel to avoid deadlock 2016-07-22 13:35:57 +01:00
docs Add conditional services based on mobyplatform 2016-07-18 12:39:14 +01:00
licensing Update to Alpine 3.4 2016-06-03 12:45:15 +01:00
requirements Initial requirements 2015-11-26 15:17:40 +00:00
scripts modernise... 2016-07-12 16:02:49 +01:00
xhyve fix some pedantic xhyve build issues with newer toolchain 2016-03-29 18:46:20 +01:00
.dockerignore add more dockerignores 2016-04-13 11:24:31 +01:00
.gitignore Initial test hooks 2016-07-08 15:44:04 +01:00
Dockerfile.qemu more memory for qemu 2016-07-15 13:31:59 +01:00
Dockerfile.qemu.armhf more memory 2016-03-11 14:13:12 +00:00
Dockerfile.qemuiso add a qemu iso target 2016-02-19 16:11:23 +00:00
Dockerfile.test Add conditional services based on mobyplatform 2016-07-18 12:39:14 +01:00
Makefile Improve make test output 2016-07-18 16:05:01 +01:00
README.md update README for qemu, arm support 2016-01-19 10:44:03 +00:00

Base repo for Moby, codename for the Docker Linux distro

Initial requirements are being driven by the very minimal goal of replacing boot2docker for the new Mac app.

However these requirements are fairly small and the scope is intended to be much broader.

Simple build instructions: use make to build. make xhyve will boot it up on a Mac; unless you run with sudo you will not get any networking. make qemu will boot up in qemu in a container.

You can build for arm, some parts still under development, make clean first, then make qemu-arm will run in qemu.