Commit Graph

53 Commits

Author SHA1 Message Date
e878830be2 devmapper: Fix prefix name to work with udev
Udev escapes "," used in device names to 0\x2c which breaks libdevmapper.
Instead use : to escape minor and minor which works.
Upstream-commit: 2812baf3957391bf8871bd56c00a58f4fbc0b715
Component: engine
2013-10-18 11:39:47 +02:00
1357281d03 devmapper: Fix major/minor extraction
The way devices are mapped is a bit more complex than before.
This implements the method from new_decode_dev in:
https://github.com/mirrors/linux-2.6/blob/master/include/linux/kdev_t.h

Which is what is needed on kernels > 2.6
Upstream-commit: 572b1fd9be69c20a98d885e18b327031ef4f4b51
Component: engine
2013-10-18 11:38:21 +02:00
5be5b89b7a devmapper: use major,minor of underlying device in devmapper device name, for readability.
Upstream-commit: 4756ad248a6b8c70a7f4d6cb1aacd6e60e27b1e6
Component: engine
2013-10-18 08:30:53 +00:00
e658fc1a1d devmapper: clearer make the 'unknown base hash' error message more understandable
Upstream-commit: dfb77274cef85c0561d98de2eee8b2562c329d1f
Component: engine
2013-10-18 08:22:42 +00:00
89f16d267d Merge remote-tracking branch 'alexlarsson/dm-status' into dm
Conflicts:
	devmapper/deviceset.go
Upstream-commit: 73545199a8e84ebc7e44bf2595c7f7b0e20f04a1
Component: engine
2013-10-18 07:17:13 +00:00
c588125712 devmapper: cleanup error reporting
Upstream-commit: 0ad35c67462ce3343b99d40ea78755d2ad92a754
Component: engine
2013-10-18 07:09:13 +00:00
8069d98b90 Merge branch 'dm' of ssh://github.com/dotcloud/docker into dm
Upstream-commit: 5e363072f54ec1cf0fdb7feb70cdce38622dcbe0
Component: engine
2013-10-18 06:51:50 +00:00
c3b863ceed Merge pull request #2269 from alexlarsson/dm-blocksize
devmapper: Use a smaller blocksize for the thin-pool
Upstream-commit: 9f85a967bb121a5102f2244611a6aa9cf3abb2b3
Component: engine
2013-10-17 22:50:33 -07:00
66093eff84 devmapper: rename deviceset_devmapper.go to deviceset.go
Upstream-commit: 85a36b3b53f39e13bba9d69a486758b68301d503
Component: engine
2013-10-18 05:19:22 +00:00
19207ea5e6 Merge remote-tracking branch 'alexlarsson/dm-readonly-images' into dm
Conflicts:
	devmapper/deviceset_devmapper.go
Upstream-commit: d3505d836ac98a95b2129206844b6e4d6ad24927
Component: engine
2013-10-18 03:40:46 +00:00
d24b97a314 devmapper: Rename DeviceSetDM to DeviceSet
Upstream-commit: 4bd6021806985b48b872aa9dbe2d0183675eac1d
Component: engine
2013-10-18 00:07:56 +00:00
5c8226fc06 Add error checking and error messages
Upstream-commit: 31b883b07641bfab721a05f0a68629c79b74a058
Component: engine
2013-10-17 15:04:14 -07:00
efce3d8602 Devmapper: Mount images readonly when calculating changes
There is no need to have this be writable, and there is a chance
that e.g. atime updates will cause writes to the image which is
bad for disk use wrt sharing between all containers.
Upstream-commit: a14496ce891f1f09b10f0459550e8fe095b477b5
Component: engine
2013-10-17 16:14:53 +02:00
17a97293a6 devmapper: Use a smaller blocksize for the thin-pool
As per the thin provisioning docs for creating the pool:

   $data_block_size gives the smallest unit of disk space that can be
   allocated at a time expressed in units of 512-byte sectors.
   $data_block_size must be between 128 (64KB) and 2097152 (1GB) and a
   multiple of 128 (64KB). $data_block_size cannot be changed after the
   thin-pool is created. People primarily interested in thin provisioning
   may want to use a value such as 1024 (512KB). People doing lots of
   snapshotting may want a smaller value such as 128 (64KB).

The switch from 512 (which we used before) to 128 (recommended above
for lots of snapshoting) means a simple container creation (based on the
mattdm/fedora:f19 image) adds 1 MB of diskspace rather than 3.6.
This seems more in tune with how docker is typically used.
Upstream-commit: 8abcc8e713fdf6229d65dec23e6e104f8040d704
Component: engine
2013-10-17 15:33:00 +02:00
3972ff1232 Show devicemapper status in "docker info"
This shows the current global diskspace use in "docker info"
Upstream-commit: d733cdcebbcb6bc8573e1869b11f0d9116a92892
Component: engine
2013-10-17 15:32:07 +02:00
9f21580deb devicemapper: Use device/inode of the root dir, not the image
This way the devicemapper prefix stays stable even if we're not
using loopback mounted devices.
Upstream-commit: e6a73e65a23163273fa63d54b8f12530f7eef104
Component: engine
2013-10-17 09:53:09 +02:00
d2fc2c3021 devmapper: error reporting workaround in waitRemove()
Upstream-commit: ad2fbd9e873915d9d09685887eb0afe16b9559a4
Component: engine
2013-10-17 01:49:51 +00:00
cff980c7fc devmapper: small fixes in error reporting
Upstream-commit: e5d7472a0d0268957eebbc385005d6b69c442270
Component: engine
2013-10-17 01:49:27 +00:00
379a09a137 devmapper: debug messages
Upstream-commit: 7d3c7e2b297badc152213cae1e6a11f64a7691b4
Component: engine
2013-10-17 01:47:03 +00:00
d0feec3427 devmapper: prefix device names with the dev_id+inode of the data image
Upstream-commit: f1d07e2dbe41a3a4f9b8ee1de544fc9c2de88c60
Component: engine
2013-10-17 01:46:28 +00:00
0563e530aa devmapper: add useful comments
Upstream-commit: ad968ef3ef54f3161e8e1012f0ef20b8757ac0aa
Component: engine
2013-10-17 01:42:05 +00:00
1dde114e36 devmapper: debug messages
Upstream-commit: c688e9b5a61c1979d497cfe9cba0a6099aad63e8
Component: engine
2013-10-16 23:27:33 +00:00
43f0475727 devmapper: wait for devices to be effectively removed before returning a successful remove
Upstream-commit: ea04f3de72ab97c9f9e49e46e049bf0cde58ac55
Component: engine
2013-10-16 23:26:37 +00:00
45b9d24be0 devicemapper: remove unused code
Upstream-commit: 153248b60f551d4cb92bce4f35b08084f554c62c
Component: engine
2013-10-16 23:23:35 +00:00
c659ac4a84 devmapper: wait for devices to be effectively unmounted before removing them
Upstream-commit: 1711de4b0996a6fd668f1d1ba07901d04f090810
Component: engine
2013-10-16 23:06:07 +00:00
d7aa3ef25d Add debug messages while testing devicemapper
Upstream-commit: 11d695a2973d67906145e7f0972b6e693bdaa3f9
Component: engine
2013-10-16 20:45:59 +00:00
e0dfea89d2 Change default values for devicemapper as variable instead of env
Upstream-commit: 3a246ac3d1368931998a082043c9b719dd3c10cd
Component: engine
2013-10-16 20:42:50 +00:00
05176434d1 WIP: debugging dm-base-hash + dm-refactor-init
Upstream-commit: cd61fb2e6f9d2a7bbd3c4db2ab9091674746126d
Component: engine
2013-10-15 23:56:04 +00:00
58a19a7d93 Merge branch 'dm-refactor-init' into dm
Conflicts:
	runtime_test.go
Upstream-commit: fdba1aeed8c80b3c2f8cd14c3b393581e7ef99a8
Component: engine
2013-10-15 23:27:28 +00:00
990549480d Merge branch 'dm-base-hash' into dm
Upstream-commit: c9f3e54c3148aeaaa668bcdff184e14d016d2613
Component: engine
2013-10-15 23:09:26 +00:00
3dc4429624 devmapper: create device nodes 'on create' instead of 'on resume'
Upstream-commit: 5ebaca7e55e006083e6e9c2782e4f8b421275579
Component: engine
2013-10-15 21:27:47 +00:00
821d8910fe Rename loopback dir to devicemapper
Upstream-commit: 4431e9edb7cf49ec7da8201da1221b5b03ea09ee
Component: engine
2013-10-15 11:30:06 -07:00
ceadf83972 Use incrementing prefix on pool and loopback to allow dind
Upstream-commit: 3455c1a0983ae74d22b05abc3c0552460c6a2710
Component: engine
2013-10-14 17:48:43 -07:00
0e3ebd255a Allow loopback and base fs sizes set by env var
Upstream-commit: c3f1bb3287a10ed0d49f48630b92c69ff6ca4ff7
Component: engine
2013-10-11 20:37:11 -07:00
f3a38555ac device-mapper: Move all devicemapper spew to log through utils.Debugf().
Upstream-commit: b440ec0136793ebcfbf8d76e6cd16ccba0785382
Component: engine
2013-10-11 16:31:06 -07:00
ecfa6df5b6 devmapper: Move all "raw" libdevmapper wrappers to devmapper.go
This separates out the DeviceSet logic a bit better from the raw
device mapper operations.

devicemapper: Serialize addess to the devicemapper deviceset

This code is not safe to run in multiple threads at the same time,
and neither is libdevmapper.

DeviceMapper: Move deactivate into UnmountDevice

This way the deactivate is atomic wrt othe device mapper operations
and will not fail with EBUSY if someone else starts a devicemapper
operation inbetween unmount and deactivate.

devmapper: Fix loopback mounting regression

Some changes were added to attach_loop_device which added
a perror() in a place that caused it to override errno so that
a later errno != EBUSY failed. This fixes that and cleans up
the error reporting a bit.

devmapper: Build on old kernels without LOOP_CTL_GET_FREE define
Upstream-commit: c77697a45ca615f66351a7363e93c3903e92553f
Component: engine
2013-10-11 16:30:02 -07:00
7bc3cd3dbe Merge pull request #2087 from alexlarsson/device-mapper-test
Device mapper test branch update
Upstream-commit: f6913592a12b0ae98b4f2c9132da7101f74b859a
Component: engine
2013-10-04 07:54:43 -07:00
850aea64f1 Remove overly spewy Debugf
Upstream-commit: f7e374fb3a51bd25e61ae6c4343838a0ca756fba
Component: engine
2013-10-04 15:36:30 +02:00
baed3230a9 Small fixes
Upstream-commit: f29c500d8d480547874425ba98a9381fdc9df89e
Component: engine
2013-10-03 18:05:07 -07:00
78b0694228 Make sure we mark the libdevmapper /dev/mapper/control fd CLOEXEC
We do a hack to mark it such, because otherwise lxc-start will not
work.
Upstream-commit: 1a1be5a87c2169def7b0b0c29fc5cbac850a00a5
Component: engine
2013-10-03 21:00:16 +02:00
7dc11f73be Random improvments
Upstream-commit: 8b2f4aab232880cb0d7faa18ae12adb33f483b2c
Component: engine
2013-10-02 20:18:15 -07:00
705988989e disable: don't create device nodes manually if udev is not availabile as we don't have it in dind
Upstream-commit: 55189307d0ec6992f76572fae675bd371cc36cff
Component: engine
2013-10-03 15:47:38 +00:00
71899158fd Tests: Clean up any old devmapper leftovers before starting tests
Upstream-commit: 03320f0d1c5a687ec46cbf6d836cc91576b3b225
Component: engine
2013-09-26 15:09:33 +00:00
30395e320c Add DeviceSet.HasActivatedDevice()
This lets you see if a device has been activated
Upstream-commit: 395bce4c4174014cb3264c35a7c6f97a2cb0948f
Component: engine
2013-09-26 15:09:33 +00:00
63649a9435 devmapper: Fix loopback mount code
Typo in the loop-control code made it always fall back to the
old method of opening loopback devices.
Upstream-commit: cc28829429f5f11da287ecb75ee5b3e5f05d31ad
Component: engine
2013-09-26 15:09:32 +00:00
ee414671bb devmapper: Move init layer to top rather than bottom
The init layer needs to be topmost to make sure certain files
are always there (for instance, the ubuntu:12.10 image wrongly
has /dev/shm being a symlink to /run/shm, and we need to override
that). However, previously the devmapper code implemented the
init layer by putting it in the base devmapper device, which meant
layers above it could override these files (so that ubuntu:12.10
broke).

So, instead we put the base layer in *each* images devmapper device.
This is "safe" because we still have the pristine layer data
in the layer directory. Also, it means we diff the container
against the image with the init layer applied, so it won't show
up in diffs/commits.
Upstream-commit: c199ed228baf0e5d33b7739cc2442a32dece7020
Component: engine
2013-09-26 15:09:32 +00:00
51abe008c8 deviceset: Cleanup device sets on test end
We unmount all mounts and deactivate all device mapper devices to
make sure we're left with no leftovers after the test.
Upstream-commit: c6e8813c979bbea8832f47dc6468e805a1a18c3e
Component: engine
2013-09-26 15:09:32 +00:00
f82807f434 DeviceSet: Add UnmountDevice()
Right now this does nothing but add a new layer, but it means
that all DeviceMounts are paired with DeviceUnmounts so that we
can track (and cleanup) active mounts.
Upstream-commit: 251a7ed437c17ecb66d33782f0b42633033198dd
Component: engine
2013-09-26 15:09:31 +00:00
5e59cd4e23 Limit the amount of prints during normal runs
This removes some Debugf() calls and chages some direct prints to
Debugf(). This means we don't get a bunch of spew when running the
tests.
Upstream-commit: bc7fa7b95773d638754eb72e7921ac328acb2ad6
Component: engine
2013-09-26 15:09:31 +00:00
eda48ebeaf devmapper: Base the device-mapper names on the root dir name
This means the default is "docker-*", but for tests we get separate
prefixes for each test.
Upstream-commit: 8f343ea65a05b374ffa64940a1946abf28402689
Component: engine
2013-09-26 15:08:55 +00:00