Commit Graph

74 Commits

Author SHA1 Message Date
Rolf Neugebauer
0c38fd266e build: update packages to new alpine-build-c base
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-12-16 16:21:39 +00:00
David Sheets
212c58cf13 transfused: use memcmp instead of a loop for checking init message
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
e6a66eaef8 transfused: use read_exactly in subproto reading
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
274e119da8 transfused: use read_exactly in init thread message reading
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
f071e2bfde transfused: factor read_exactly out of read_message
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
3474639a4f transfused: minor formatting fixup
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
78544eb1ae transfused: replace brittle init control message writing with write_exactly
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
125c3941eb transfused: replace brittle event pid writing with write_exactly
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
1b6ee65a02 transfused: improve write_exactly error handling
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
David Sheets
2414966689 transfused: improve read_message robustness
Signed-off-by: David Sheets <dsheets@docker.com>
2016-12-15 11:03:29 +00:00
Riyaz Faizullabhoy
8b7cdd41dc Use digests instead of tags where possible
Signed-off-by: Riyaz Faizullabhoy <riyaz.faizullabhoy@docker.com>
2016-12-01 09:39:02 -08:00
Justin Cormack
88eafcc239 update c build base image
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-11-18 23:32:47 +00:00
Justin Cormack
29196a5872 update C build base images for Musl update
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-10-20 13:23:12 +01:00
Justin Cormack
47124e8282 do not remove build containers
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-10-11 16:12:40 +01:00
Justin Cormack
4e2f887f40 add ncurses to C build for menuconfig
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-10-01 18:26:38 +01:00
Justin Cormack
652d5eddf3 Use build container id rather than tagging builds
This means that multiple builds will not conflict, so we can
remove the lock from the CI. Also quieter when no errors.

Some still left to do, only done the ones used in build and CI
initially. Some of the others will be cleaned up anyway later.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-09-29 20:21:17 +01:00
Justin Cormack
bf29850d3c Use patched aufs-utils so can compile kernel with alpine
This is going to be submitted upstream.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-09-29 16:17:46 +01:00
Rolf Neugebauer
31430016b2 transfused: Use Linux coding style (mostly)
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-09-16 11:02:29 +01:00
Justin Cormack
8646f76ed2 update to latest alpine base images
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:02:07 +01:00
Justin Cormack
b1597ff9a9 Move all output to the directories it will be in eventually
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:02:07 +01:00
Justin Cormack
cbd6fc71a1 clean up transfused build
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:00:53 +01:00
Justin Cormack
3a2c28f352 Closer to reproducible builds
Make an alpine base image for C and Go builds.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-09-06 13:18:11 +01:00
David Sheets
78cca476fb transfused: copyedit a couple error messages
Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-22 13:40:52 +01:00
David Sheets
ddd0fcc603 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
Justin Cormack
db7bc9cb8c Only run transfused on mac platform
See #301

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 12:11:39 +01:00
Rolf Neugebauer
6c95bff567 init: don't start transfused on Windows
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
2016-07-12 14:04:08 +01:00
David Sheets
ef98586c22 transfused: add mknod reg file event actuation message
Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-11 16:26:00 -07:00
David Sheets
11f965ce7b Remove /Mac in docker init and transfused init
Replace /Mac with /host_docker_app and replace driverDir with just driver.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-08 14:36:26 -07:00
David Sheets
fbcba85f0e transfused: distinguish export requests from mount requests
We distinguish export suitability requests from bind mount suitability
requests in the transfuse control protocol. This distinction allows us to
permit both bind mounts of empty directories and export mounts onto empty
directories. Addresses docker/pinata#4213.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-04 18:53:05 -07:00
David Sheets
a84e4ecfdd transfused: use find rather than rm+glob to clean up /tmp
This avoids annoying error messages about . and ..

Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-09 11:27:59 +01:00
David Sheets
4090ccf9d0 transfused: replace space indentation in rc script with tabs for consistency
Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-08 15:16:43 +01:00
David Sheets
c92ff1d36c transfused: remove anything in /tmp before starting
Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-08 15:16:43 +01:00
Ian Campbell
b8a7032161 Add || true to the docker rmi invocations in the clean target
Linux xargs calls the command with no arguments if it gets no inputs, which
`docker rmi` complains about. It provides -r / --no-run-if-empty to prevent
this but unfortunately this isn't supported on OSX.

Ignore errors from `docker rmi` so that `make clean` will keep going and clean
up later stuff.

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
2016-06-08 13:59:47 +01:00
David Sheets
c6cc814454 transfused: remove rc script cruft
Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-07 22:22:23 +01:00
David Sheets
c2c0cb98ce transfused: when starting, wait up to 2s for pidfile to appear
pidfile appearance is triggered by start-up mount completion.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-07 22:21:16 +01:00
David Sheets
d605e6df30 transfused: update control protocol (#181)
Add a mount suitability predicate, a pong reply message type, and a log
notice message type. Also, fixes the multi-line mount point printing issue.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-07 19:13:52 +01:00
David Sheets
4330d389cc transfused: introduce automatic mount point preparation
Mount points are now made dynamically if either the leaf doesn't exist
or the leaf has no children. Any proper prefix of the target mount point may
or may not exist prior to mounting.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-03 16:31:49 +01:00
Justin Cormack
8a86af7d1e Update to Alpine 3.4
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-03 12:45:15 +01:00
David Sheets
afd7458c01 transfused: add a PING event for vsock RTT measurement
Signed-off-by: David Sheets <dsheets@docker.com>
2016-04-21 10:22:57 +01:00
David Sheets
a2ffa99c25 transfused: make sure to flush the logging socket when we die
Signed-off-by: David Sheets <dsheets@docker.com>
2016-04-16 18:54:48 +01:00
David Sheets
6f76ac9627 transfused: push log messages over control channel if available
Also, remove self-logging and triggers.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-04-15 17:11:38 +01:00
David Sheets
8b8bf30eb7 transfused: update the event protocol for streaming vsock
Signed-off-by: David Sheets <dsheets@docker.com>
2016-04-14 14:57:06 +01:00
David Sheets
52feb0c4d5 transfused: use vsock transport instead of 9p
Signed-off-by: David Sheets <dsheets@docker.com>
2016-04-12 16:38:06 +01:00
Justin Cormack
3c9c67bb16 remove 9pinit package, work now done by appropriate packages or mobyconfig tool
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-04-07 16:40:54 +01:00
Justin Cormack
d8001a2475 move transfused 9p mount into its own init file
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-04-07 10:35:50 +01:00
Justin Cormack
6b00a34abc add --rm for transfused
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-03-29 18:31:55 +01:00
Jeremy Yallop
d521bcfcd9 Transfused: free connection objects when read returns 0. 2016-03-29 16:37:51 +01:00
Justin Cormack
f51deb84d4 use build-base not alpine-sdk as smaller and we do not need rest
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-03-28 18:18:48 +01:00
David Sheets
b8660ad77b transfused: add chmod event syscall
Signed-off-by: David Sheets <dsheets@docker.com>
2016-03-20 22:01:22 +00:00
David Sheets
7861ecc474 transfused: create threads already detached
Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-20 11:20:00 +00:00