Commit Graph

27 Commits

Author SHA1 Message Date
e12f62e6df Properly close archives
All archive that are created from somewhere generally have to be closed, because
at some point there is a file or a pipe or something that backs them. So, we
make archive.Archive a ReadCloser. However, code consuming archives does not
typically close them so we add an archive.ArchiveReader and use that when we're
only reading.

We then change all the Tar/Archive places to create ReadClosers, and to properly
close them everywhere.

As an added bonus we can use ReadCloserWrapper rather than EofReader in several places,
which is good as EofReader doesn't always work right. For instance, many compression
schemes like gzip knows it is EOF before having read the EOF from the stream, so the
EofCloser never sees an EOF.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Upstream-commit: f198ee525ad6862dce3940e08c72e0a092380a7b
Component: engine
2014-02-14 13:46:17 +01:00
a906461155 Add experimenta btrfs driver
This is an experimental btrfs driver. To use it you must have
/var/lib/docker mounted on a btrfs filesystem and explicitly
specify DOCKER_DRIVER=btrfs in the docker daemon environment.

It works by using subvolumes for the docker image/container layers.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Upstream-commit: e51af36a85126aca6bf6da5291eaf960fd82aa56
Component: engine
2014-01-22 21:44:09 +01:00
5e35604785 Add Put() to graphdriver API and use it
This makes all users of Put() have a corresponding call
to Get() which means we will be able to track whether
any particular ID is in use and if not unmount it.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Upstream-commit: bcaf6c2359d83acd5da54f499e21f4a148f491c5
Component: engine
2014-01-21 11:25:37 +01:00
b1b08f39e6 Rename dummy in driver.go to vfs
Upstream-commit: 8b0b10b6f9fa152346e62b5dad1f4d430ae0e4d1
Component: engine
2013-11-25 10:28:17 -08:00
a1d40e81ca Use variable to call functions in devmapper_wrapper + some formatting
Upstream-commit: 79e2b33ede415736f9124089a61f4512c16ddddd
Component: engine
2013-11-22 12:25:37 -08:00
f6524ff456 Handle image metadata when drivers are switched
Upstream-commit: 1b28cdc7f977f265d0d8de53e8ec1d773ed54db1
Component: engine
2013-11-20 10:31:51 -08:00
2a2c0a4cdc Check env var for setting driver in tests
Upstream-commit: aea6001baf0cd0fb20a607e37e4379bf644b28fd
Component: engine
2013-11-19 03:13:22 -08:00
c8cec50adf Add flag to set default graph driver
Remove the env var DOCKER_DRIVER
Upstream-commit: 6dbeed89c061b85551ab638f93282d87de8ab929
Component: engine
2013-11-19 02:37:44 -08:00
99bee9426b Implement fallback for getting the size of a container
This moves Driver.Size() to Differ.DiffSize(), removing the empty
implementations in devmapper and dummy, and renaming the one in aufs.

Then we fall back to a container.Changes() implementation in the non-aufs
case.
Upstream-commit: 5d76681c3d0cbb744205a397420603ce029ce754
Component: engine
2013-11-19 10:36:54 +01:00
c579e87812 Merge pull request #33 from alexlarsson/dm-plugin-status
Add driver plugin status
Upstream-commit: 7cad77b1e2d0b8af5dcadce0599fc83cbe1970f4
Component: engine
2013-11-15 10:15:59 -08:00
faff941ade Use dummy driver for volumes
It makes no sense to use the aufs or devicemapper drivers for volumes.
The aufs one is perhaps not a big problem, but the devicemapper one
certainly is. It will be unnecessarily using a dm
blockdevice-over-loopback with a limited size base FS.

This just hardcodes the driver to be the dummy, perhaps in the future
we can have other drivers that make sense for the volumes.
Upstream-commit: 10f23a94f6daaf03c684937daea67d10205b4b89
Component: engine
2013-11-15 11:30:28 +01:00
fa730d3073 Print devicemapper status details in docker info
This adds a generic Status call in the Driver api and
implements if for the devicemapper backend.

The status is an array of key/value strings rather than a map so that
we can guarantee some static order of the docker info output.
Upstream-commit: 243843c0787ce2b56c8bbf72a2d4bd7604e84b2e
Component: engine
2013-11-15 11:04:02 +01:00
fb91dc2f0c Show active driver in docker info output
Upstream-commit: 062810caedba973e76a3dd7eb9e45b56511eefc6
Component: engine
2013-11-15 10:24:48 +01:00
084cb15f1a Allow drivers to implement ApplyDiff in Differ interface
Upstream-commit: 5d9723002bc764e2c768e5184994d7949f55fc49
Component: engine
2013-11-11 19:09:57 -08:00
86d455035f Remove Differ and Changer interfaces
Add the methods to the Driver interface
to force the drivers to implement the methods
Upstream-commit: 4d1a537433ede2bbc75b0a4817e8121f9e03fd86
Component: engine
2013-11-11 12:10:53 -08:00
122fd6b9c2 Implement fallback operation for driver.Diff()
This moves the Diff() operation to a separate Differ interface and
implements a fallback that uses the Changes() results to encode
a diff tar.
Upstream-commit: e82f8c1661f3fa18e4dc6ca3aebe4dcc46e8961b
Component: engine
2013-11-11 17:46:07 +01:00
f4f11a5ecb Allow driver to provide changes if it impl the Changer interface
Upstream-commit: 95147675870e9e84deb354f09f0f670a5cb2b1e1
Component: engine
2013-11-08 14:54:20 -08:00
d9e6045c49 Name sure drivers are confined into their own dir
Upstream-commit: 08a276986c363c5b2e7435fb59935485c53aae59
Component: engine
2013-11-08 11:36:58 -08:00
491fee7d48 Fix aufs error at startup
Add String methods to other drivers
Upstream-commit: 51c93c0f3318efa95a02d25677a1a4837f1af9f6
Component: engine
2013-11-07 19:02:15 -08:00
54325d7ac7 Set DOCKER_DRIVER to override the choice of driver (aufs, devicemapper or dummy)
Upstream-commit: 8c21d2acd33c2bbaba224e19fbef30a3ba8788df
Component: engine
2013-11-08 02:49:32 +00:00
a38c2eb35b New 'dummy' driver uses plain directories and regular copy
Upstream-commit: 81674fbbdf657de2c1d13b7c84a41c9edd3c8aa1
Component: engine
2013-11-08 01:52:56 +00:00
914824bce7 Move Change to the archive package, and fix a leftover merge in
Container.Inject()
Upstream-commit: 9ae4bcaaf8aa01da340341e47f99f83a59ce91dc
Component: engine
2013-11-08 00:45:07 +00:00
7e3e167f73 Simplify graphdriver interface: Create, Get. No more external mounting or Dir/Image interface
Upstream-commit: f2bab1557c3fef4a95b5b982fe7127fcb29c4f8f
Component: engine
2013-11-07 22:38:50 +00:00
4629ddf3be Fix a crash in graphdriver init
Upstream-commit: a63ff8da46e11c857cd3d743d72d211c96b637e4
Component: engine
2013-11-07 20:31:50 +00:00
cb784bb36f Finalize driver interfaces
Upstream-commit: ed572b457d28101b6ef465e5a3e221ee1fc7d48a
Component: engine
2013-11-04 20:51:12 -08:00
14efe59bac Add graph driver registration
Upstream-commit: 752bfba2c5d6030d6fe3d615d0c2afd2696e7b20
Component: engine
2013-11-04 15:22:34 -08:00
a4e732c90b Rename graph backends to 'drivers' which is probably more self-explanatory
Upstream-commit: ff42748bc567745198b33baa697338dd697fb621
Component: engine
2013-11-04 01:54:51 +00:00