Commit Graph

62 Commits

Author SHA1 Message Date
Justin Cormack
2409adfe0a 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
cfbdc7d067 do not remove build containers
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-10-11 16:12:40 +01:00
Justin Cormack
e1454f0249 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
fa19d3259b 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
0214c41ff3 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
3c30271f3c 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
43ab6520cf update to latest alpine base images
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:02:07 +01:00
Justin Cormack
276157a769 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
b75711b4cd clean up transfused build
Signed-off-by: Justin Cormack <justin@specialbusservice.com>
2016-09-12 16:00:53 +01:00
Justin Cormack
d4b5fc07c9 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
b25b891d3b transfused: copyedit a couple error messages
Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-22 13:40:52 +01:00
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
Justin Cormack
093a81064b 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
b499b52d48 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
20fc67092a 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
8473eb56f2 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
c75eb93d1c 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
ede31ffe5b 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
903e6430d9 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
e725aa7d47 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
5165a6c795 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
06f1a5b81f transfused: remove rc script cruft
Signed-off-by: David Sheets <dsheets@docker.com>
2016-06-07 22:22:23 +01:00
David Sheets
67dd25d1ba 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
b58448fdf5 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
0d0413b264 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
e434c70507 Update to Alpine 3.4
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-06-03 12:45:15 +01:00
David Sheets
59310aec70 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
1113c21644 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
fe91be997d 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
b894b67417 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
cb08ad76d3 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
0acd6c8196 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
73a0d72378 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
f98fb92480 add --rm for transfused
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-03-29 18:31:55 +01:00
Jeremy Yallop
f23b6d7596 Transfused: free connection objects when read returns 0. 2016-03-29 16:37:51 +01:00
Justin Cormack
dc5258eeed 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
a3b644ca5d transfused: add chmod event syscall
Signed-off-by: David Sheets <dsheets@docker.com>
2016-03-20 22:01:22 +00:00
David Sheets
c0b857c7bb transfused: create threads already detached
Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-20 11:20:00 +00:00
David Sheets
72157cf5ee transfused: move logging off of the event actuation thread
Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-20 11:08:57 +00:00
David Sheets
725329983a transfused: fix run-time log non-append bug
Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-20 11:04:01 +00:00
David Sheets
471833fae7 transfused: work-around virtio-9p/v9fs zero-copy bug
Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-20 11:03:24 +00:00
David Sheets
16101e66c3 transfused: add start-up log, self-log trigger, and run-time log flags
During start-up, logs are sent to syslog and stderr and the console if
syslog is not available. -l logfile will also send the logs to logfile but
only prior to any log trigger events. -m mount_trigger lets the user
specify the mount point to watch for to begin sending logs to
-t triggered_log file which may be on the newly mounted file system. Log
concatenation and rollover are not implemented, yet. Logging functionality
has been separated into transfused_log.c. Locks have been placed around
shared fds. The writer thread is now symmetric to the reader thread instead
of inheriting the parent's thread in order to trigger log switchover after
the file system proxy has started. The coredump size rlimit has been lifted.

Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-18 11:21:42 +00:00
David Sheets
58ded96b29 transfused: fix usage msg, remove syslog, use start-stop-daemon logging
Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-18 09:33:41 +00:00
David Sheets
224bbcea63 transfused: change protocol to support events, add syslog logging
The event string in the 9p socket file system now contains a 1 byte
channel type immediately preceding the connection ID. This channel type
determines which protocol will be used on the channel -- m for FUSE
protocol, e for events. The event messages are host-initiated and have
the following structure:

  2 bytes for total length
  2 bytes for path length + NUL (x)
  x bytes for path
  1 byte  for syscall

stderr logging was also changed to syslog-based logging in this patch.

Signed-off-by: David Sheets <david.sheets@docker.com>
2016-03-18 09:33:41 +00:00
Justin Cormack
b4560d8876 fix typo
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-03-17 14:06:39 +00:00
Justin Cormack
8c49b54738 make sure transfused is logging
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-03-17 12:30:18 +00:00
Justin Cormack
928667ca57 clean up transfused startup scripts
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-02-26 13:46:26 +00:00
David Sheets
b1d3101846 transfused: if the pidfile exists, make sure to truncate it 2016-02-12 14:08:11 +00:00
David Sheets
cbd5ca5991 transfused: it is ok if the pidfile does not yet exist 2016-02-12 14:08:11 +00:00
David Sheets
eb199ca9d7 transfused: init with a pidfile 2016-02-12 14:08:11 +00:00