{"action":"created","issue":{"url":"https://api.github.com/repos/docker/docker/issues/18560","labels_url":"https://api.github.com/repos/docker/docker/issues/18560/labels{/name}","comments_url":"https://api.github.com/repos/docker/docker/issues/18560/comments","events_url":"https://api.github.com/repos/docker/docker/issues/18560/events","html_url":"https://github.com/docker/docker/pull/18560","id":121416507,"number":18560,"title":"WIP alternative overlay driver using multiple ro layers","user":{"login":"vikstrous","id":482425,"avatar_url":"https://avatars.githubusercontent.com/u/482425?v=3","gravatar_id":"","url":"https://api.github.com/users/vikstrous","html_url":"https://github.com/vikstrous","followers_url":"https://api.github.com/users/vikstrous/followers","following_url":"https://api.github.com/users/vikstrous/following{/other_user}","gists_url":"https://api.github.com/users/vikstrous/gists{/gist_id}","starred_url":"https://api.github.com/users/vikstrous/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vikstrous/subscriptions","organizations_url":"https://api.github.com/users/vikstrous/orgs","repos_url":"https://api.github.com/users/vikstrous/repos","events_url":"https://api.github.com/users/vikstrous/events{/privacy}","received_events_url":"https://api.github.com/users/vikstrous/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/docker/docker/labels/dco/no","name":"dco/no","color":"f7c6c7"},{"url":"https://api.github.com/repos/docker/docker/labels/status/0-triage","name":"status/0-triage","color":"EEEEEE"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":3,"created_at":"2015-12-10T06:40:24Z","updated_at":"2015-12-10T18:31:27Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/docker/docker/pulls/18560","html_url":"https://github.com/docker/docker/pull/18560","diff_url":"https://github.com/docker/docker/pull/18560.diff","patch_url":"https://github.com/docker/docker/pull/18560.patch"},"body":"I started working on an overlay storage driver that doesn't use so many hardlinks and instead uses multiple read-only layers. The code is still pretty rough, but I wanted to open this PR to get some initial feedback on the idea.\r\n\r\nI'm basically merging a bunch of code from the overlay driver and the aufs driver to produce an overlay driver that uses the directory structure and general approach of the aufs driver. Instead of hardlinking the lower layer into the upper layer when applying a diff, I'm just taking advantage of multiple read-only mounts. This feature was added to overlay in linux 3.19.\r\n\r\nMajor TODOs left:\r\n* [ ] convert overlayfs whiteouts and opaque directories to the AUFS format\r\n* [ ] handle more than one page worth of mount arguments by chaining multiple mounts\r\n\r\nI still have to clean up the code quite a bit, but it seems to work so far as long as  you don't have too many layers for one container and as long as you don't push/pull images that need to also work with other drivers.\r\n\r\nI don't have any tests yet, so any tips for testing this would be appreciated.\r\n\r\nI created this PR against 1.9 because it's stable, but there's no reason this wouldn't work with minimal modifications against master as well."},"comment":{"url":"https://api.github.com/repos/docker/docker/issues/comments/163710801","html_url":"https://github.com/docker/docker/pull/18560#issuecomment-163710801","issue_url":"https://api.github.com/repos/docker/docker/issues/18560","id":163710801,"user":{"login":"vikstrous","id":482425,"avatar_url":"https://avatars.githubusercontent.com/u/482425?v=3","gravatar_id":"","url":"https://api.github.com/users/vikstrous","html_url":"https://github.com/vikstrous","followers_url":"https://api.github.com/users/vikstrous/followers","following_url":"https://api.github.com/users/vikstrous/following{/other_user}","gists_url":"https://api.github.com/users/vikstrous/gists{/gist_id}","starred_url":"https://api.github.com/users/vikstrous/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vikstrous/subscriptions","organizations_url":"https://api.github.com/users/vikstrous/orgs","repos_url":"https://api.github.com/users/vikstrous/repos","events_url":"https://api.github.com/users/vikstrous/events{/privacy}","received_events_url":"https://api.github.com/users/vikstrous/received_events","type":"User","site_admin":false},"created_at":"2015-12-10T18:31:27Z","updated_at":"2015-12-10T18:31:27Z","body":"I suspect that having multiple ro layers might have a worse performance at runtime than the hardlinks approach, so before making this the official overlay driver, I would like the benchmark the two."}}