Commit Graph

971 Commits

Author SHA1 Message Date
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
19f04c7c6d Merge pull request #333 from justincormack/diagnosticsfix
allow for args for servers in diagnostics
2016-07-21 18:39:37 +01:00
Justin Cormack
32aa36439a allow for args for servers in diagnostics
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-21 18:38:38 +01:00
Justin Cormack
4370d9bd90 Merge pull request #331 from justincormack/fixdiag
fix typo
2016-07-21 17:35:37 +01:00
Justin Cormack
6a6f924283 fix typo
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-21 17:35:11 +01:00
Justin Cormack
42aa840fbc Merge pull request #330 from justincormack/unknownplatform
default to unknown platform if not specified in command line
2016-07-21 17:26:59 +01:00
Justin Cormack
c121983dd5 default to unknown platform if not specified in command line
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-21 17:25:48 +01:00
Justin Cormack
abf4ba2288 Merge pull request #329 from justincormack/diskdetect
Tweak disk detection diagnostics to match what is going on better
2016-07-21 16:15:04 +01:00
Justin Cormack
7682ed2503 Tweak disk detection diagnostics to match what is going on better
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-21 15:48:24 +01:00
Justin Cormack
c209ee554b Merge pull request #328 from justincormack/CLFAGS
typo
2016-07-21 15:38:32 +01:00
Justin Cormack
37f1ede6ee Merge pull request #327 from justincormack/armbuild
Clean up sources that arm edition will not need
2016-07-21 13:47:23 +01:00
Justin Cormack
ebca732d3d typo
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-21 13:41:56 +01:00
Justin Cormack
20a85c16f1 Clean up sources that arm edition will not need
As arm will not be a desktop edition, we will not need to
try to fix these. We do need `diagnostics` though, the
vsock code however is not cross building, needs to be fixed
or made conditional.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-21 13:39:03 +01:00
Justin Cormack
d3d355ece5 Merge pull request #326 from justincormack/openrcshutdown
use openrc for shutdown
2016-07-21 13:32:47 +01:00
Justin Cormack
55d3a0dd42 use openrc for shutdown
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-21 12:57:05 +01:00
Rolf Neugebauer
423b3c2765 Merge pull request #309 from justincormack/tapvsockvmbus
Use mobyplatform not vmbus for tap-vsock
2016-07-21 10:34:57 +01:00
Justin Cormack
4ccb36f900 Merge pull request #319 from nathanleclaire/posix_shell
Remove bash-isms in cloud build scripts
2016-07-21 09:54:46 +01:00
Justin Cormack
13b2d94b75 Merge pull request #321 from nathanleclaire/rm_walinuxagent
Remove Windows Azure Linux agent Dockerfile
2016-07-21 09:53:53 +01:00
Justin Cormack
6d3057c2cb Merge pull request #313 from justincormack/hvtools-vmbus
Use platform to decide whether to run hv tools
2016-07-21 09:53:18 +01:00
Justin Cormack
27f6130cb8 Merge pull request #312 from justincormack/vsuddvmbus
Use platform name not vmbus
2016-07-21 09:52:48 +01:00
Nathan LeClaire
7eef629176 Remove Windows Azure Linux agent Dockerfile
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-07-20 18:54:53 -07:00
Nathan LeClaire
4b8ea4d403 Remove bash-isms in cloud build scripts
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-07-20 17:35:40 -07:00
Justin Cormack
663b6848a0 Merge pull request #306 from justincormack/chronyconfig
Fix up chronyd support for editions
2016-07-21 00:45:27 +01:00
Justin Cormack
daf0b870b6 Merge pull request #320 from nathanleclaire/diagnostic_oops
Diagnostic oops
2016-07-21 00:43:56 +01:00
Nathan LeClaire
afb9b91b60 Remove unused file
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-07-20 13:48:52 -07:00
Nathan LeClaire
9ecf003a33 Fix error in diagnostic server init code
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-07-20 13:48:21 -07:00
Justin Cormack
59dd4f2f1d Merge pull request #318 from dsheets/llmnrd-finish-removal
finish removal of llmnrd from #311
2016-07-20 17:12:25 +01:00
David Sheets
c3793ff745 finish removal of llmnrd from #311
Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-20 17:03:51 +01:00
Justin Cormack
3dbf3280d5 Merge pull request #317 from dsheets/kernel-af_vsock-lockdep
kernel: backport af_vsock lockdep cleanliness patch from v4.7-rc6
2016-07-20 16:27:33 +01:00
David Sheets
ed0630dcf6 kernel: backport af_vsock lockdep cleanliness patch from v4.7-rc6
From torvalds/linux@4192f672fa which was
part of torvalds/linux@v4.7-rc6. The change is purely to ensure that vsock
is lockdep-clean.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-20 16:22:21 +01:00
Justin Cormack
aa829b811b Merge pull request #316 from dsheets/kernel-aufs-lockdep
kernel: apply the AUFS patch to integrate with lockdep
2016-07-20 16:18:42 +01:00
Rolf Neugebauer
d2e2a5308d Merge pull request #311 from justincormack/nollmnr
Remove llmnrd
2016-07-20 16:14:14 +01:00
David Sheets
473765c04b kernel: apply the AUFS patch to integrate with lockdep
AUFS introduces new lockdep relations which are beyond the maximum variants
that lockdep ships with. Without this patch, AUFS triggers lockdep BUG sanity
checks and disables lockdep for the rest of the system.

The present value of the patch is:

```diff
aufs4.4 lockdep patch

diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index c57e424..4153563 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -29,7 +29,7 @@ extern int lock_stat;
  */
 #define XXX_LOCK_USAGE_STATES		(1+3*4)

-#define MAX_LOCKDEP_SUBCLASSES		8UL
+#define MAX_LOCKDEP_SUBCLASSES		(8UL + 4)

 /*
  * NR_LOCKDEP_CACHING_CLASSES ... Number of classes
@@ -203,7 +203,7 @@ struct lock_chain {
 	u64				chain_key;
 };

-#define MAX_LOCKDEP_KEYS_BITS		13
+#define MAX_LOCKDEP_KEYS_BITS		(13 + 3)
 /*
  * Subtract one because we offset hlock->class_idx by 1 in order
  * to make 0 mean no class. This avoids overflowing the class_idx
diff --git a/kernel/locking/lockdep_internals.h b/kernel/locking/lockdep_internals.h
index 51c4b24..fba7557 100644
--- a/kernel/locking/lockdep_internals.h
+++ b/kernel/locking/lockdep_internals.h
@@ -54,9 +54,9 @@ enum {
  * table (if it's not there yet), and we check it for lock order
  * conflicts and deadlocks.
  */
-#define MAX_LOCKDEP_ENTRIES	32768UL
+#define MAX_LOCKDEP_ENTRIES	(32768UL << 5)

-#define MAX_LOCKDEP_CHAINS_BITS	16
+#define MAX_LOCKDEP_CHAINS_BITS	(16 + 5)
 #define MAX_LOCKDEP_CHAINS	(1UL << MAX_LOCKDEP_CHAINS_BITS)

 #define MAX_LOCKDEP_CHAIN_HLOCKS (MAX_LOCKDEP_CHAINS*5)
@@ -65,7 +65,7 @@ enum {
  * Stack-trace: tightly packed array of stack backtrace
  * addresses. Protected by the hash_lock.
  */
-#define MAX_STACK_TRACE_ENTRIES	524288UL
+#define MAX_STACK_TRACE_ENTRIES	(524288UL << 5)

 extern struct list_head all_lock_classes;
 extern struct lock_chain lock_chains[];
```

Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-20 16:08:00 +01:00
Justin Cormack
4d6162f31e Merge pull request #315 from dsheets/kernel-vmlinux
kernel: make sure to gitignore vmlinux
2016-07-20 15:42:39 +01:00
David Sheets
1b43354bcb kernel: make sure to gitignore vmlinux
Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-20 15:40:54 +01:00
Justin Cormack
efba990868 Merge pull request #314 from dsheets/kernel-vmlinux
kernel: add vmlinux target to make kernel debugging easier
2016-07-20 15:40:52 +01:00
David Sheets
25f3d06b7b kernel: add vmlinux target to make kernel debugging easier
With this patch, it is easy to get an unstripped kernel object to use with
gdb.

Signed-off-by: David Sheets <dsheets@docker.com>
2016-07-20 15:37:04 +01:00
Justin Cormack
9373862c07 Use platform to decide whether to run hv tools
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 14:48:16 +01:00
Justin Cormack
5d933baed1 Use platform name not vmbus
See #301

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 14:44:43 +01:00
Justin Cormack
693e8be4a9 Remove llmnrd
Not really required as ports exposed on localhost. If users
want to connext to VM ports they can use the IP address, as
this is discouraged. llmnr names are very slow to access,
so not nice to use.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 14:32:14 +01:00
Justin Cormack
58625d3a1f Merge pull request #310 from justincormack/posixlyequal
Posixly correct = not ==
2016-07-20 14:20:52 +01:00
Justin Cormack
2971b83f25 Posixly correct = not ==
See #161 #170 should be covered...

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 12:33:01 +01:00
Justin Cormack
c475121074 Use mobyplatform not vmbus for tap-vsock
Plus cleanup for less indentation. No functional change.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 12:30:59 +01:00
Rolf Neugebauer
4127e24a17 Merge pull request #308 from justincormack/transfusedvmbus
Only run transfused on mac platform
2016-07-20 12:21:18 +01:00
Rolf Neugebauer
996cab9f17 Merge pull request #307 from justincormack/proxyvmbus
use platform not vmbus consistently
2016-07-20 12:17:20 +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
Justin Cormack
487307a551 use platform not vmbus consistently
Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 12:07:40 +01:00
Justin Cormack
c1922f2f25 Fix up chronyd support for editions
See #305 #301

This sets AWS to use the amazon ntp pool, windows to do nothing,
mac uses ntp it gets from DNS. Azure currently uses default pool,
this probably needs fixing.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 12:02:59 +01:00
Justin Cormack
ec9a4a5428 Merge pull request #304 from justincormack/norawtcp
Remove rawtcp from diagnostics server
2016-07-20 11:48:18 +01:00
Justin Cormack
2bf06aab05 Remove rawtcp from diagnostics server
See https://github.com/docker/moby/pull/303

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2016-07-20 11:46:54 +01:00