{"action":"created","issue":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10563","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10563/labels{/name}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10563/comments","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10563/events","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10563","id":92169801,"number":10563,"title":"rbd mount fencing","user":{"login":"rootfs","id":7062400,"avatar_url":"https://avatars.githubusercontent.com/u/7062400?v=3","gravatar_id":"","url":"https://api.github.com/users/rootfs","html_url":"https://github.com/rootfs","followers_url":"https://api.github.com/users/rootfs/followers","following_url":"https://api.github.com/users/rootfs/following{/other_user}","gists_url":"https://api.github.com/users/rootfs/gists{/gist_id}","starred_url":"https://api.github.com/users/rootfs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rootfs/subscriptions","organizations_url":"https://api.github.com/users/rootfs/orgs","repos_url":"https://api.github.com/users/rootfs/repos","events_url":"https://api.github.com/users/rootfs/events{/privacy}","received_events_url":"https://api.github.com/users/rootfs/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/cla:%20yes","name":"cla: yes","color":"bfe5bf"},{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels/lgtm","name":"lgtm","color":"159818"}],"state":"open","locked":false,"assignee":{"login":"thockin","id":5595220,"avatar_url":"https://avatars.githubusercontent.com/u/5595220?v=3","gravatar_id":"","url":"https://api.github.com/users/thockin","html_url":"https://github.com/thockin","followers_url":"https://api.github.com/users/thockin/followers","following_url":"https://api.github.com/users/thockin/following{/other_user}","gists_url":"https://api.github.com/users/thockin/gists{/gist_id}","starred_url":"https://api.github.com/users/thockin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thockin/subscriptions","organizations_url":"https://api.github.com/users/thockin/orgs","repos_url":"https://api.github.com/users/thockin/repos","events_url":"https://api.github.com/users/thockin/events{/privacy}","received_events_url":"https://api.github.com/users/thockin/received_events","type":"User","site_admin":false},"milestone":null,"comments":9,"created_at":"2015-06-30T18:46:53Z","updated_at":"2015-07-06T17:13:45Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10563","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10563","diff_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10563.diff","patch_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10563.patch"},"body":"This aims to fix #10462.\r\n\r\nIn event of multiple pods mounting the same rbd volume, only one can succeed. This avoids multiple pod writing to the rbd volume and corrupt data.\r\n\r\nrbd mount fencing uses [rbd lock add|remove|list](http://ceph.com/docs/master/man/8/rbd/). Kubelet mounter checks if the rbd image has a lock, if lock exists and is held by others, then no more mount and kubelet fails the pod. Read-only mount can still go without checking lock.\r\n\r\nStill running tests to rule out regression. Big appreciation for volunteers helping me test it."},"comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments/118928013","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10563#issuecomment-118928013","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10563","id":118928013,"user":{"login":"rootfs","id":7062400,"avatar_url":"https://avatars.githubusercontent.com/u/7062400?v=3","gravatar_id":"","url":"https://api.github.com/users/rootfs","html_url":"https://github.com/rootfs","followers_url":"https://api.github.com/users/rootfs/followers","following_url":"https://api.github.com/users/rootfs/following{/other_user}","gists_url":"https://api.github.com/users/rootfs/gists{/gist_id}","starred_url":"https://api.github.com/users/rootfs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rootfs/subscriptions","organizations_url":"https://api.github.com/users/rootfs/orgs","repos_url":"https://api.github.com/users/rootfs/repos","events_url":"https://api.github.com/users/rootfs/events{/privacy}","received_events_url":"https://api.github.com/users/rootfs/received_events","type":"User","site_admin":false},"created_at":"2015-07-06T17:13:45Z","updated_at":"2015-07-06T17:13:45Z","body":"NEW: If multiple Pods use the same RBD volume in read-write mode, it is possible data on the RBD volume could get corrupted. This problem has been found in environments where both apiserver and etcd rebooted and Pod were redistributed. \r\n\r\nA workaround is to ensure there is no other Ceph client uses the RBD volume before mapping RBD image in read-write mode. For example, `rados -p poolname listwatchers image_name.rbd` can list RBD clients that are mapping the image.\r\n"}}