{"action":"created","comment":{"url":"https://api.github.com/repos/zfsonlinux/zfs/pulls/comments/210789451","pull_request_review_id":147080231,"id":210789451,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMDc4OTQ1MQ==","diff_hunk":"@@ -7094,6 +7096,9 @@ _init(void)\n \n \tzfs_ioctl_init();\n \n+\tif ((error = zpl_xattr_init()) != 0)\n+\t\tgoto out;","path":"module/zfs/zfs_ioctl.c","position":null,"original_position":14,"commit_id":"c7121b0fe49bdbabe521fd28096a6d783a6cb3a5","original_commit_id":"244d1c3a2f88267aaf0c18ba7405d0a3e4e5ccef","user":{"login":"pbhenson","id":299344,"node_id":"MDQ6VXNlcjI5OTM0NA==","avatar_url":"https://avatars1.githubusercontent.com/u/299344?v=4","gravatar_id":"","url":"https://api.github.com/users/pbhenson","html_url":"https://github.com/pbhenson","followers_url":"https://api.github.com/users/pbhenson/followers","following_url":"https://api.github.com/users/pbhenson/following{/other_user}","gists_url":"https://api.github.com/users/pbhenson/gists{/gist_id}","starred_url":"https://api.github.com/users/pbhenson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbhenson/subscriptions","organizations_url":"https://api.github.com/users/pbhenson/orgs","repos_url":"https://api.github.com/users/pbhenson/repos","events_url":"https://api.github.com/users/pbhenson/events{/privacy}","received_events_url":"https://api.github.com/users/pbhenson/received_events","type":"User","site_admin":false},"body":"Ok; done.\r\n\r\nThe calls to prepare_kernel_cred(), keyring_alloc(), register_key_type() can potentially fail. I'm not sure in exactly what circumstances, other than out of memory?","created_at":"2018-08-17T02:11:43Z","updated_at":"2018-08-17T02:11:43Z","html_url":"https://github.com/zfsonlinux/zfs/pull/7728#discussion_r210789451","pull_request_url":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/zfsonlinux/zfs/pulls/comments/210789451"},"html":{"href":"https://github.com/zfsonlinux/zfs/pull/7728#discussion_r210789451"},"pull_request":{"href":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728"}},"in_reply_to_id":205224826},"pull_request":{"url":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728","id":202717780,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAyNzE3Nzgw","html_url":"https://github.com/zfsonlinux/zfs/pull/7728","diff_url":"https://github.com/zfsonlinux/zfs/pull/7728.diff","patch_url":"https://github.com/zfsonlinux/zfs/pull/7728.patch","issue_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/7728","number":7728,"state":"open","locked":false,"title":"NFSv4 ACL support - WIP, review requested","user":{"login":"pbhenson","id":299344,"node_id":"MDQ6VXNlcjI5OTM0NA==","avatar_url":"https://avatars1.githubusercontent.com/u/299344?v=4","gravatar_id":"","url":"https://api.github.com/users/pbhenson","html_url":"https://github.com/pbhenson","followers_url":"https://api.github.com/users/pbhenson/followers","following_url":"https://api.github.com/users/pbhenson/following{/other_user}","gists_url":"https://api.github.com/users/pbhenson/gists{/gist_id}","starred_url":"https://api.github.com/users/pbhenson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbhenson/subscriptions","organizations_url":"https://api.github.com/users/pbhenson/orgs","repos_url":"https://api.github.com/users/pbhenson/repos","events_url":"https://api.github.com/users/pbhenson/events{/privacy}","received_events_url":"https://api.github.com/users/pbhenson/received_events","type":"User","site_admin":false},"body":"### Description\r\n\r\nImplements zfs native NFSv4 ACL support by providing an xattr handler for the system.nfs4_acl attribute. ACL's can be manipulated using the existing nfs4-acl-tools package.\r\n\r\n### Motivation and Context\r\n\r\nNo explanation is required as to why it would be nice to support the native zfs ACL; this will resolve https://github.com/zfsonlinux/zfs/issues/4966\r\n\r\n### How Has This Been Tested?\r\n\r\nThis was built and tested under Ubuntu 18.04 LTS; only a limited amount of testing to verify basic functionality has been performed at this point pending initial review of the code.\r\n\r\n### Types of changes\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [x] New feature (non-breaking change which adds functionality)\r\n- [ ] Performance enhancement (non-breaking change which improves efficiency)\r\n- [ ] Code cleanup (non-breaking change which makes code smaller or more readable)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n- [ ] Documentation (a change to man pages or other documentation)\r\n\r\n### Checklist:\r\n\r\nThis is an initial WIP that will certainly not be ready to commit, at this point I'm just looking for feedback on the code and potential unresolved issues, in particular (as demarked in the code via XXX comments):\r\n\r\nposix acl support is controlled by the kernel config option CONFIG_FS_POSIX_ACL, there isn't really anything similar for NFS4 ACL's. The closest  thing might be CONFIG_NFS_ACL_SUPPORT, but that doesn't really seem appropriate. Maybe the native zfs acl support shouldn't be conditional?  Just always available?\r\n\r\nIn zfs_vfsops.c, turning on and off posix acl support adds/removes the relevant mount flag:\r\nzfsvfs->z_sb->s_flags |= MS_NFS4ACL;\r\nzfsvfs->z_sb->s_flags &= ~MS_NFS4ACL;\r\nDoes something similar need to be done for nfs4 acl support?\r\n\r\nSimilarly, in zpl_super.c, it adds posixacl and noacl to some list, I'm not sure if nfs4acl should be added to the same list.\r\n\r\nThere were a handful of standard functions from security/keys/user_defined.c that were marked GPL only, I reimplemented different local functions to do the same thing; I'm not sure what policy is on stuff like that.\r\n\r\nThere's a function which was user_key_payload in older kernels, but is now user_key_payload_rcu as of 4.11, it needs to be wrapped to do the right thing but I'm not sure my autoconf-fu is up to it, so would appreciate a hand with it.\r\n\r\nThe constants from zfs acl flags and nfs4-acl-tools flags don't match:\r\n\r\nfrom zfs acl.h:\r\n\r\n\t#define ACE_INHERITED_ACE               0x0080\r\n\t#define ACE_OWNER                       0x1000\r\n\t#define ACE_GROUP                       0x2000\r\n\t#define ACE_EVERYONE                    0x4000\r\n\r\n   From nfs4-acl-tools:\r\n\r\n\t#define NFS4_ACE_OWNER                        0x00000080\r\n\t#define NFS4_ACE_GROUP                        0x00000100\r\n\t#define NFS4_ACE_EVERYONE                     0x00000200\r\n\r\nI don't see these defined in the NFSv4 RFC? Where did they originally come from? For now the implementation is mapping between them so it does the right thing.","created_at":"2018-07-20T00:30:49Z","updated_at":"2018-08-17T02:11:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4d0717644865a734ae7de0b7f99b144054b860d7","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":40358,"node_id":"MDU6TGFiZWw0MDM1OA==","url":"https://api.github.com/repos/zfsonlinux/zfs/labels/Feature","name":"Feature","color":"02d7e1","default":false},{"id":453022836,"node_id":"MDU6TGFiZWw0NTMwMjI4MzY=","url":"https://api.github.com/repos/zfsonlinux/zfs/labels/Work%20in%20Progress","name":"Work in Progress","color":"b60205","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728/commits","review_comments_url":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728/comments","review_comment_url":"https://api.github.com/repos/zfsonlinux/zfs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/7728/comments","statuses_url":"https://api.github.com/repos/zfsonlinux/zfs/statuses/c7121b0fe49bdbabe521fd28096a6d783a6cb3a5","head":{"label":"pbhenson:nfsv4_acl","ref":"nfsv4_acl","sha":"c7121b0fe49bdbabe521fd28096a6d783a6cb3a5","user":{"login":"pbhenson","id":299344,"node_id":"MDQ6VXNlcjI5OTM0NA==","avatar_url":"https://avatars1.githubusercontent.com/u/299344?v=4","gravatar_id":"","url":"https://api.github.com/users/pbhenson","html_url":"https://github.com/pbhenson","followers_url":"https://api.github.com/users/pbhenson/followers","following_url":"https://api.github.com/users/pbhenson/following{/other_user}","gists_url":"https://api.github.com/users/pbhenson/gists{/gist_id}","starred_url":"https://api.github.com/users/pbhenson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbhenson/subscriptions","organizations_url":"https://api.github.com/users/pbhenson/orgs","repos_url":"https://api.github.com/users/pbhenson/repos","events_url":"https://api.github.com/users/pbhenson/events{/privacy}","received_events_url":"https://api.github.com/users/pbhenson/received_events","type":"User","site_admin":false},"repo":{"id":140342733,"node_id":"MDEwOlJlcG9zaXRvcnkxNDAzNDI3MzM=","name":"zfs","full_name":"pbhenson/zfs","owner":{"login":"pbhenson","id":299344,"node_id":"MDQ6VXNlcjI5OTM0NA==","avatar_url":"https://avatars1.githubusercontent.com/u/299344?v=4","gravatar_id":"","url":"https://api.github.com/users/pbhenson","html_url":"https://github.com/pbhenson","followers_url":"https://api.github.com/users/pbhenson/followers","following_url":"https://api.github.com/users/pbhenson/following{/other_user}","gists_url":"https://api.github.com/users/pbhenson/gists{/gist_id}","starred_url":"https://api.github.com/users/pbhenson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbhenson/subscriptions","organizations_url":"https://api.github.com/users/pbhenson/orgs","repos_url":"https://api.github.com/users/pbhenson/repos","events_url":"https://api.github.com/users/pbhenson/events{/privacy}","received_events_url":"https://api.github.com/users/pbhenson/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pbhenson/zfs","description":"ZFS on Linux - the official OpenZFS implementation for Linux.","fork":true,"url":"https://api.github.com/repos/pbhenson/zfs","forks_url":"https://api.github.com/repos/pbhenson/zfs/forks","keys_url":"https://api.github.com/repos/pbhenson/zfs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pbhenson/zfs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pbhenson/zfs/teams","hooks_url":"https://api.github.com/repos/pbhenson/zfs/hooks","issue_events_url":"https://api.github.com/repos/pbhenson/zfs/issues/events{/number}","events_url":"https://api.github.com/repos/pbhenson/zfs/events","assignees_url":"https://api.github.com/repos/pbhenson/zfs/assignees{/user}","branches_url":"https://api.github.com/repos/pbhenson/zfs/branches{/branch}","tags_url":"https://api.github.com/repos/pbhenson/zfs/tags","blobs_url":"https://api.github.com/repos/pbhenson/zfs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pbhenson/zfs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pbhenson/zfs/git/refs{/sha}","trees_url":"https://api.github.com/repos/pbhenson/zfs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pbhenson/zfs/statuses/{sha}","languages_url":"https://api.github.com/repos/pbhenson/zfs/languages","stargazers_url":"https://api.github.com/repos/pbhenson/zfs/stargazers","contributors_url":"https://api.github.com/repos/pbhenson/zfs/contributors","subscribers_url":"https://api.github.com/repos/pbhenson/zfs/subscribers","subscription_url":"https://api.github.com/repos/pbhenson/zfs/subscription","commits_url":"https://api.github.com/repos/pbhenson/zfs/commits{/sha}","git_commits_url":"https://api.github.com/repos/pbhenson/zfs/git/commits{/sha}","comments_url":"https://api.github.com/repos/pbhenson/zfs/comments{/number}","issue_comment_url":"https://api.github.com/repos/pbhenson/zfs/issues/comments{/number}","contents_url":"https://api.github.com/repos/pbhenson/zfs/contents/{+path}","compare_url":"https://api.github.com/repos/pbhenson/zfs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pbhenson/zfs/merges","archive_url":"https://api.github.com/repos/pbhenson/zfs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pbhenson/zfs/downloads","issues_url":"https://api.github.com/repos/pbhenson/zfs/issues{/number}","pulls_url":"https://api.github.com/repos/pbhenson/zfs/pulls{/number}","milestones_url":"https://api.github.com/repos/pbhenson/zfs/milestones{/number}","notifications_url":"https://api.github.com/repos/pbhenson/zfs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pbhenson/zfs/labels{/name}","releases_url":"https://api.github.com/repos/pbhenson/zfs/releases{/id}","deployments_url":"https://api.github.com/repos/pbhenson/zfs/deployments","created_at":"2018-07-09T21:12:49Z","updated_at":"2018-07-09T21:12:59Z","pushed_at":"2018-08-16T22:33:41Z","git_url":"git://github.com/pbhenson/zfs.git","ssh_url":"git@github.com:pbhenson/zfs.git","clone_url":"https://github.com/pbhenson/zfs.git","svn_url":"https://github.com/pbhenson/zfs","homepage":"http://zfsonlinux.org/","size":50184,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"zfsonlinux:master","ref":"master","sha":"2e5dc449c1a65e0b0bf730fd69c9b5804bd57ee8","user":{"login":"zfsonlinux","id":575083,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU3NTA4Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/575083?v=4","gravatar_id":"","url":"https://api.github.com/users/zfsonlinux","html_url":"https://github.com/zfsonlinux","followers_url":"https://api.github.com/users/zfsonlinux/followers","following_url":"https://api.github.com/users/zfsonlinux/following{/other_user}","gists_url":"https://api.github.com/users/zfsonlinux/gists{/gist_id}","starred_url":"https://api.github.com/users/zfsonlinux/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zfsonlinux/subscriptions","organizations_url":"https://api.github.com/users/zfsonlinux/orgs","repos_url":"https://api.github.com/users/zfsonlinux/repos","events_url":"https://api.github.com/users/zfsonlinux/events{/privacy}","received_events_url":"https://api.github.com/users/zfsonlinux/received_events","type":"Organization","site_admin":false},"repo":{"id":437011,"node_id":"MDEwOlJlcG9zaXRvcnk0MzcwMTE=","name":"zfs","full_name":"zfsonlinux/zfs","owner":{"login":"zfsonlinux","id":575083,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU3NTA4Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/575083?v=4","gravatar_id":"","url":"https://api.github.com/users/zfsonlinux","html_url":"https://github.com/zfsonlinux","followers_url":"https://api.github.com/users/zfsonlinux/followers","following_url":"https://api.github.com/users/zfsonlinux/following{/other_user}","gists_url":"https://api.github.com/users/zfsonlinux/gists{/gist_id}","starred_url":"https://api.github.com/users/zfsonlinux/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zfsonlinux/subscriptions","organizations_url":"https://api.github.com/users/zfsonlinux/orgs","repos_url":"https://api.github.com/users/zfsonlinux/repos","events_url":"https://api.github.com/users/zfsonlinux/events{/privacy}","received_events_url":"https://api.github.com/users/zfsonlinux/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/zfsonlinux/zfs","description":"ZFS on Linux - the official OpenZFS implementation for Linux.","fork":false,"url":"https://api.github.com/repos/zfsonlinux/zfs","forks_url":"https://api.github.com/repos/zfsonlinux/zfs/forks","keys_url":"https://api.github.com/repos/zfsonlinux/zfs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zfsonlinux/zfs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zfsonlinux/zfs/teams","hooks_url":"https://api.github.com/repos/zfsonlinux/zfs/hooks","issue_events_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/events{/number}","events_url":"https://api.github.com/repos/zfsonlinux/zfs/events","assignees_url":"https://api.github.com/repos/zfsonlinux/zfs/assignees{/user}","branches_url":"https://api.github.com/repos/zfsonlinux/zfs/branches{/branch}","tags_url":"https://api.github.com/repos/zfsonlinux/zfs/tags","blobs_url":"https://api.github.com/repos/zfsonlinux/zfs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zfsonlinux/zfs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zfsonlinux/zfs/git/refs{/sha}","trees_url":"https://api.github.com/repos/zfsonlinux/zfs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zfsonlinux/zfs/statuses/{sha}","languages_url":"https://api.github.com/repos/zfsonlinux/zfs/languages","stargazers_url":"https://api.github.com/repos/zfsonlinux/zfs/stargazers","contributors_url":"https://api.github.com/repos/zfsonlinux/zfs/contributors","subscribers_url":"https://api.github.com/repos/zfsonlinux/zfs/subscribers","subscription_url":"https://api.github.com/repos/zfsonlinux/zfs/subscription","commits_url":"https://api.github.com/repos/zfsonlinux/zfs/commits{/sha}","git_commits_url":"https://api.github.com/repos/zfsonlinux/zfs/git/commits{/sha}","comments_url":"https://api.github.com/repos/zfsonlinux/zfs/comments{/number}","issue_comment_url":"https://api.github.com/repos/zfsonlinux/zfs/issues/comments{/number}","contents_url":"https://api.github.com/repos/zfsonlinux/zfs/contents/{+path}","compare_url":"https://api.github.com/repos/zfsonlinux/zfs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zfsonlinux/zfs/merges","archive_url":"https://api.github.com/repos/zfsonlinux/zfs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zfsonlinux/zfs/downloads","issues_url":"https://api.github.com/repos/zfsonlinux/zfs/issues{/number}","pulls_url":"https://api.github.com/repos/zfsonlinux/zfs/pulls{/number}","milestones_url":"https://api.github.com/repos/zfsonlinux/zfs/milestones{/number}","notifications_url":"https://api.github.com/repos/zfsonlinux/zfs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zfsonlinux/zfs/labels{/name}","releases_url":"https://api.github.com/repos/zfsonlinux/zfs/releases{/id}","deployments_url":"https://api.github.com/repos/zfsonlinux/zfs/deployments","created_at":"2009-12-14T20:20:34Z","updated_at":"2018-08-16T11:43:38Z","pushed_at":"2018-08-17T01:40:29Z","git_url":"git://github.com/zfsonlinux/zfs.git","ssh_url":"git@github.com:zfsonlinux/zfs.git","clone_url":"https://github.com/zfsonlinux/zfs.git","svn_url":"https://github.com/zfsonlinux/zfs","homepage":"https://zfsonlinux.org/","size":50424,"stargazers_count":3405,"watchers_count":3405,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":797,"mirror_url":null,"archived":false,"open_issues_count":977,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":797,"open_issues":977,"watchers":3405,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728"},"html":{"href":"https://github.com/zfsonlinux/zfs/pull/7728"},"issue":{"href":"https://api.github.com/repos/zfsonlinux/zfs/issues/7728"},"comments":{"href":"https://api.github.com/repos/zfsonlinux/zfs/issues/7728/comments"},"review_comments":{"href":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728/comments"},"review_comment":{"href":"https://api.github.com/repos/zfsonlinux/zfs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/zfsonlinux/zfs/pulls/7728/commits"},"statuses":{"href":"https://api.github.com/repos/zfsonlinux/zfs/statuses/c7121b0fe49bdbabe521fd28096a6d783a6cb3a5"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"pbhenson"}}