A toolkit for building secure, portable and lean operating systems for containers
Go to file
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
alpine kernel: apply the AUFS patch to integrate with lockdep 2016-07-20 16:08:00 +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.