{"action":"opened","number":2060,"pull_request":{"url":"https://api.github.com/repos/control-center/serviced/pulls/2060","id":47699920,"html_url":"https://github.com/control-center/serviced/pull/2060","diff_url":"https://github.com/control-center/serviced/pull/2060.diff","patch_url":"https://github.com/control-center/serviced/pull/2060.patch","issue_url":"https://api.github.com/repos/control-center/serviced/issues/2060","number":2060,"state":"open","locked":false,"title":"Brand new dfs layout","user":{"login":"smousa","id":3171936,"avatar_url":"https://avatars.githubusercontent.com/u/3171936?v=3","gravatar_id":"","url":"https://api.github.com/users/smousa","html_url":"https://github.com/smousa","followers_url":"https://api.github.com/users/smousa/followers","following_url":"https://api.github.com/users/smousa/following{/other_user}","gists_url":"https://api.github.com/users/smousa/gists{/gist_id}","starred_url":"https://api.github.com/users/smousa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smousa/subscriptions","organizations_url":"https://api.github.com/users/smousa/orgs","repos_url":"https://api.github.com/users/smousa/repos","events_url":"https://api.github.com/users/smousa/events{/privacy}","received_events_url":"https://api.github.com/users/smousa/received_events","type":"User","site_admin":false},"body":"In addition to code review, would like some feedback on the following:\r\n1. I use driver.Get() on snapshots to get the parent volume.  This doesn't work with devicemapper, because if the snapshot volume I am trying to get is \"latest\", then it complains about the volume being mounted twice.  What do you suppose is the best way to handle this?  What should be the right way to get the parent volume of a snapshot?\r\n\r\n2. We no longer write to disk while building a backup and restore from backup.  This is plenty more efficient, except that we have write a lot of data to memory, especially when we are saving snapshots and exporting volumes.  I would like to write directly to tarfile, but a tarfile needs to know the size of the data to be written beforehand.  Is there a strategy we can employ to support data chunking on our tarfile backups?\r\n\r\n3.  Restoring from backup: there is now some support for resumable restores, meaning if your snapshot volume has already been imported from a backup and you have to cancel and resume the restore for whatever reason, your snapshot volume will not be reread from the backup tar.  I can also see the value of keeping that snapshot around even after the restore is successful.  However, if we choose to keep the snapshot around, would be beneficial to also support tagging the backed up snapshot, so that the user will have to delete the snapshot, instead of it being purged prematurely?\r\n\r\n4. Easy question: does it make more sense to embed volume.SnapshotInfo into dfs.SnapshotInfo? \r\n\r\n5. BackupStatus has gone away for right now, will probably write that into the facade\r\n\r\n6. TX are available in zookeeper, so I am planning on setting up a transactional tenant lock on the facade, so we don't have to block all services during a backup and snapshots lock services under that particular tenant.","created_at":"2015-10-14T18:55:33Z","updated_at":"2015-10-14T18:55:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/control-center/serviced/pulls/2060/commits","review_comments_url":"https://api.github.com/repos/control-center/serviced/pulls/2060/comments","review_comment_url":"https://api.github.com/repos/control-center/serviced/pulls/comments{/number}","comments_url":"https://api.github.com/repos/control-center/serviced/issues/2060/comments","statuses_url":"https://api.github.com/repos/control-center/serviced/statuses/ee258fde365bf35679f1e74acd7a2dbc654c73db","head":{"label":"control-center:feature/CC-1251.DFS","ref":"feature/CC-1251.DFS","sha":"ee258fde365bf35679f1e74acd7a2dbc654c73db","user":{"login":"control-center","id":8160673,"avatar_url":"https://avatars.githubusercontent.com/u/8160673?v=3","gravatar_id":"","url":"https://api.github.com/users/control-center","html_url":"https://github.com/control-center","followers_url":"https://api.github.com/users/control-center/followers","following_url":"https://api.github.com/users/control-center/following{/other_user}","gists_url":"https://api.github.com/users/control-center/gists{/gist_id}","starred_url":"https://api.github.com/users/control-center/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/control-center/subscriptions","organizations_url":"https://api.github.com/users/control-center/orgs","repos_url":"https://api.github.com/users/control-center/repos","events_url":"https://api.github.com/users/control-center/events{/privacy}","received_events_url":"https://api.github.com/users/control-center/received_events","type":"Organization","site_admin":false},"repo":{"id":11929217,"name":"serviced","full_name":"control-center/serviced","owner":{"login":"control-center","id":8160673,"avatar_url":"https://avatars.githubusercontent.com/u/8160673?v=3","gravatar_id":"","url":"https://api.github.com/users/control-center","html_url":"https://github.com/control-center","followers_url":"https://api.github.com/users/control-center/followers","following_url":"https://api.github.com/users/control-center/following{/other_user}","gists_url":"https://api.github.com/users/control-center/gists{/gist_id}","starred_url":"https://api.github.com/users/control-center/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/control-center/subscriptions","organizations_url":"https://api.github.com/users/control-center/orgs","repos_url":"https://api.github.com/users/control-center/repos","events_url":"https://api.github.com/users/control-center/events{/privacy}","received_events_url":"https://api.github.com/users/control-center/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/control-center/serviced","description":"Serviced is a PaaS runtime. It allows users to create, manage and scale services in a uniform way.","fork":false,"url":"https://api.github.com/repos/control-center/serviced","forks_url":"https://api.github.com/repos/control-center/serviced/forks","keys_url":"https://api.github.com/repos/control-center/serviced/keys{/key_id}","collaborators_url":"https://api.github.com/repos/control-center/serviced/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/control-center/serviced/teams","hooks_url":"https://api.github.com/repos/control-center/serviced/hooks","issue_events_url":"https://api.github.com/repos/control-center/serviced/issues/events{/number}","events_url":"https://api.github.com/repos/control-center/serviced/events","assignees_url":"https://api.github.com/repos/control-center/serviced/assignees{/user}","branches_url":"https://api.github.com/repos/control-center/serviced/branches{/branch}","tags_url":"https://api.github.com/repos/control-center/serviced/tags","blobs_url":"https://api.github.com/repos/control-center/serviced/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/control-center/serviced/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/control-center/serviced/git/refs{/sha}","trees_url":"https://api.github.com/repos/control-center/serviced/git/trees{/sha}","statuses_url":"https://api.github.com/repos/control-center/serviced/statuses/{sha}","languages_url":"https://api.github.com/repos/control-center/serviced/languages","stargazers_url":"https://api.github.com/repos/control-center/serviced/stargazers","contributors_url":"https://api.github.com/repos/control-center/serviced/contributors","subscribers_url":"https://api.github.com/repos/control-center/serviced/subscribers","subscription_url":"https://api.github.com/repos/control-center/serviced/subscription","commits_url":"https://api.github.com/repos/control-center/serviced/commits{/sha}","git_commits_url":"https://api.github.com/repos/control-center/serviced/git/commits{/sha}","comments_url":"https://api.github.com/repos/control-center/serviced/comments{/number}","issue_comment_url":"https://api.github.com/repos/control-center/serviced/issues/comments{/number}","contents_url":"https://api.github.com/repos/control-center/serviced/contents/{+path}","compare_url":"https://api.github.com/repos/control-center/serviced/compare/{base}...{head}","merges_url":"https://api.github.com/repos/control-center/serviced/merges","archive_url":"https://api.github.com/repos/control-center/serviced/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/control-center/serviced/downloads","issues_url":"https://api.github.com/repos/control-center/serviced/issues{/number}","pulls_url":"https://api.github.com/repos/control-center/serviced/pulls{/number}","milestones_url":"https://api.github.com/repos/control-center/serviced/milestones{/number}","notifications_url":"https://api.github.com/repos/control-center/serviced/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/control-center/serviced/labels{/name}","releases_url":"https://api.github.com/repos/control-center/serviced/releases{/id}","created_at":"2013-08-06T16:45:00Z","updated_at":"2015-10-05T03:26:17Z","pushed_at":"2015-10-14T18:55:33Z","git_url":"git://github.com/control-center/serviced.git","ssh_url":"git@github.com:control-center/serviced.git","clone_url":"https://github.com/control-center/serviced.git","svn_url":"https://github.com/control-center/serviced","homepage":null,"size":78850,"stargazers_count":73,"watchers_count":73,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":10,"forks":9,"open_issues":10,"watchers":73,"default_branch":"develop"}},"base":{"label":"control-center:develop","ref":"develop","sha":"2d352b690bae5107779bd4eb07f88454680c6ba1","user":{"login":"control-center","id":8160673,"avatar_url":"https://avatars.githubusercontent.com/u/8160673?v=3","gravatar_id":"","url":"https://api.github.com/users/control-center","html_url":"https://github.com/control-center","followers_url":"https://api.github.com/users/control-center/followers","following_url":"https://api.github.com/users/control-center/following{/other_user}","gists_url":"https://api.github.com/users/control-center/gists{/gist_id}","starred_url":"https://api.github.com/users/control-center/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/control-center/subscriptions","organizations_url":"https://api.github.com/users/control-center/orgs","repos_url":"https://api.github.com/users/control-center/repos","events_url":"https://api.github.com/users/control-center/events{/privacy}","received_events_url":"https://api.github.com/users/control-center/received_events","type":"Organization","site_admin":false},"repo":{"id":11929217,"name":"serviced","full_name":"control-center/serviced","owner":{"login":"control-center","id":8160673,"avatar_url":"https://avatars.githubusercontent.com/u/8160673?v=3","gravatar_id":"","url":"https://api.github.com/users/control-center","html_url":"https://github.com/control-center","followers_url":"https://api.github.com/users/control-center/followers","following_url":"https://api.github.com/users/control-center/following{/other_user}","gists_url":"https://api.github.com/users/control-center/gists{/gist_id}","starred_url":"https://api.github.com/users/control-center/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/control-center/subscriptions","organizations_url":"https://api.github.com/users/control-center/orgs","repos_url":"https://api.github.com/users/control-center/repos","events_url":"https://api.github.com/users/control-center/events{/privacy}","received_events_url":"https://api.github.com/users/control-center/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/control-center/serviced","description":"Serviced is a PaaS runtime. It allows users to create, manage and scale services in a uniform way.","fork":false,"url":"https://api.github.com/repos/control-center/serviced","forks_url":"https://api.github.com/repos/control-center/serviced/forks","keys_url":"https://api.github.com/repos/control-center/serviced/keys{/key_id}","collaborators_url":"https://api.github.com/repos/control-center/serviced/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/control-center/serviced/teams","hooks_url":"https://api.github.com/repos/control-center/serviced/hooks","issue_events_url":"https://api.github.com/repos/control-center/serviced/issues/events{/number}","events_url":"https://api.github.com/repos/control-center/serviced/events","assignees_url":"https://api.github.com/repos/control-center/serviced/assignees{/user}","branches_url":"https://api.github.com/repos/control-center/serviced/branches{/branch}","tags_url":"https://api.github.com/repos/control-center/serviced/tags","blobs_url":"https://api.github.com/repos/control-center/serviced/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/control-center/serviced/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/control-center/serviced/git/refs{/sha}","trees_url":"https://api.github.com/repos/control-center/serviced/git/trees{/sha}","statuses_url":"https://api.github.com/repos/control-center/serviced/statuses/{sha}","languages_url":"https://api.github.com/repos/control-center/serviced/languages","stargazers_url":"https://api.github.com/repos/control-center/serviced/stargazers","contributors_url":"https://api.github.com/repos/control-center/serviced/contributors","subscribers_url":"https://api.github.com/repos/control-center/serviced/subscribers","subscription_url":"https://api.github.com/repos/control-center/serviced/subscription","commits_url":"https://api.github.com/repos/control-center/serviced/commits{/sha}","git_commits_url":"https://api.github.com/repos/control-center/serviced/git/commits{/sha}","comments_url":"https://api.github.com/repos/control-center/serviced/comments{/number}","issue_comment_url":"https://api.github.com/repos/control-center/serviced/issues/comments{/number}","contents_url":"https://api.github.com/repos/control-center/serviced/contents/{+path}","compare_url":"https://api.github.com/repos/control-center/serviced/compare/{base}...{head}","merges_url":"https://api.github.com/repos/control-center/serviced/merges","archive_url":"https://api.github.com/repos/control-center/serviced/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/control-center/serviced/downloads","issues_url":"https://api.github.com/repos/control-center/serviced/issues{/number}","pulls_url":"https://api.github.com/repos/control-center/serviced/pulls{/number}","milestones_url":"https://api.github.com/repos/control-center/serviced/milestones{/number}","notifications_url":"https://api.github.com/repos/control-center/serviced/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/control-center/serviced/labels{/name}","releases_url":"https://api.github.com/repos/control-center/serviced/releases{/id}","created_at":"2013-08-06T16:45:00Z","updated_at":"2015-10-05T03:26:17Z","pushed_at":"2015-10-14T18:55:33Z","git_url":"git://github.com/control-center/serviced.git","ssh_url":"git@github.com:control-center/serviced.git","clone_url":"https://github.com/control-center/serviced.git","svn_url":"https://github.com/control-center/serviced","homepage":null,"size":78850,"stargazers_count":73,"watchers_count":73,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":10,"forks":9,"open_issues":10,"watchers":73,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/control-center/serviced/pulls/2060"},"html":{"href":"https://github.com/control-center/serviced/pull/2060"},"issue":{"href":"https://api.github.com/repos/control-center/serviced/issues/2060"},"comments":{"href":"https://api.github.com/repos/control-center/serviced/issues/2060/comments"},"review_comments":{"href":"https://api.github.com/repos/control-center/serviced/pulls/2060/comments"},"review_comment":{"href":"https://api.github.com/repos/control-center/serviced/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/control-center/serviced/pulls/2060/commits"},"statuses":{"href":"https://api.github.com/repos/control-center/serviced/statuses/ee258fde365bf35679f1e74acd7a2dbc654c73db"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":6360,"deletions":0,"changed_files":52}}