{"action":"created","issue":{"url":"https://api.github.com/repos/hanwen/go-fuse/issues/96","labels_url":"https://api.github.com/repos/hanwen/go-fuse/issues/96/labels{/name}","comments_url":"https://api.github.com/repos/hanwen/go-fuse/issues/96/comments","events_url":"https://api.github.com/repos/hanwen/go-fuse/issues/96/events","html_url":"https://github.com/hanwen/go-fuse/issues/96","id":128658045,"number":96,"title":"unionfs self tests fail 20% of the time on Linux 4.4","user":{"login":"rfjakob","id":286847,"avatar_url":"https://avatars.githubusercontent.com/u/286847?v=3","gravatar_id":"","url":"https://api.github.com/users/rfjakob","html_url":"https://github.com/rfjakob","followers_url":"https://api.github.com/users/rfjakob/followers","following_url":"https://api.github.com/users/rfjakob/following{/other_user}","gists_url":"https://api.github.com/users/rfjakob/gists{/gist_id}","starred_url":"https://api.github.com/users/rfjakob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rfjakob/subscriptions","organizations_url":"https://api.github.com/users/rfjakob/orgs","repos_url":"https://api.github.com/users/rfjakob/repos","events_url":"https://api.github.com/users/rfjakob/events{/privacy}","received_events_url":"https://api.github.com/users/rfjakob/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2016-01-25T22:24:06Z","updated_at":"2016-01-25T22:28:44Z","closed_at":null,"body":"Unionfs seems to be racy. About 20% of the test runs fail with different errors (example output pasted below).\r\nI am on kernel 4.4 now, and given that I have already seen this on older kernels as well ( https://github.com/hanwen/go-fuse/issues/67 ) I suspect a logic error somewhere in unionfs.\r\n\r\n```\r\n$ go test github.com/hanwen/go-fuse/unionfs\r\n2016/01/25 23:15:54 Inode = \"status/debug_setting\" (autoUnionFs(/tmp/419665521/store))\r\n2016/01/25 23:15:54 Inode = \"status/debug_setting\" (autoUnionFs(/tmp/419665521/store))\r\n2016/01/25 23:15:54 Serialize: SYMLINK code: OK value: \r\n2016/01/25 23:15:54 Dispatch: READLINK, NodeId: 4. \r\n2016/01/25 23:15:54 Inode = \"status/debug_setting\" (autoUnionFs(/tmp/419665521/store))\r\n2016/01/25 23:15:54 Serialize: READLINK code: OK value:  \"1\"\r\n2016/01/25 23:15:54 Dispatch: BATCH_FORGET, NodeId: 0. data: {2}  32 bytes\r\n2016/01/25 23:15:54 Dispatch: FORGET, NodeId: 1. data: {1} \r\n2016/01/25 23:15:54 Found version: version\r\n2016/01/25 23:15:54 Adding workspace manual1 for roots UnionFs([LoopbackFs(/tmp/851926190/store/backing1) cachingFileSystem(LoopbackFs(/tmp/851926190/store/backing1/READONLY))])\r\n2016/01/25 23:15:54 Looking for new filesystems\r\n2016/01/25 23:15:54 Adding workspace backing1 for roots UnionFs([LoopbackFs(/tmp/851926190/store/backing1) cachingFileSystem(LoopbackFs(/tmp/851926190/store/backing1/READONLY))])\r\n2016/01/25 23:15:54 Done looking\r\n2016/01/25 23:15:54 Looking for new filesystems\r\n2016/01/25 23:15:54 Adding workspace backing1 for roots UnionFs([LoopbackFs(/tmp/657096757/store/backing1) cachingFileSystem(LoopbackFs(/tmp/657096757/store/backing1/READONLY))])\r\n2016/01/25 23:15:54 Done looking\r\n2016/01/25 23:15:54 Looking for new filesystems\r\n2016/01/25 23:15:54 Adding workspace backing1 for roots UnionFs([LoopbackFs(/tmp/916717584/store/backing1) cachingFileSystem(LoopbackFs(/tmp/916717584/store/backing1/READONLY))])\r\n2016/01/25 23:15:54 Done looking\r\n2016/01/25 23:15:54 Adding workspace bar for roots UnionFs([LoopbackFs(/tmp/923392047/store/foo) cachingFileSystem(LoopbackFs(/tmp/923392047/store/foo/READONLY))])\r\n2016/01/25 23:15:54 Already have a union FS for directory /tmp/923392047/store/foo in workspace bar\r\n2016/01/25 23:15:54 Illegal name \"config\" for overlay: [/tmp/923392047/store/ws2 /tmp/923392047/store/ws2/READONLY]\r\n2016/01/25 23:15:55 Command: /usr/bin/rm -f /tmp/unionfs706380888/mnt/dir\r\n2016/01/25 23:15:55 Contents of /tmp/unionfs706380888/mnt/dir: subdir\r\n2016/01/25 23:15:55 Forced cache drop on UnionFs([LoopbackFs(/tmp/unionfs249050071/rw) cachingFileSystem(LoopbackFs(/tmp/unionfs249050071/ro))])\r\n2016/01/25 23:15:55 Dropping cache for cachingFileSystem(LoopbackFs(/tmp/unionfs249050071/ro))\r\n2016/01/25 23:15:55 Forced cache drop on UnionFs([LoopbackFs(/tmp/unionfs674426186/rw) cachingFileSystem(LoopbackFs(/tmp/unionfs674426186/ro))])\r\n2016/01/25 23:15:55 Dropping cache for cachingFileSystem(LoopbackFs(/tmp/unionfs674426186/ro))\r\n2016/01/25 23:15:55 TestUnionFsDisappearing2\r\n2016/01/25 23:15:55 newDirnameMap(LoopbackFs(/dev/null)): DELETIONS 20=not a directory\r\n2016/01/25 23:15:55 newDirnameMap(LoopbackFs(/dev/null)): DELETIONS 20=not a directory\r\n2016/01/25 23:15:55 newDirnameMap(LoopbackFs(/dev/null)): DELETIONS 20=not a directory\r\n2016/01/25 23:15:55 newDirnameMap(LoopbackFs(/dev/null)): DELETIONS 20=not a directory\r\n2016/01/25 23:15:55 newDirnameMap(LoopbackFs(/dev/null)): DELETIONS 20=not a directory\r\n2016/01/25 23:15:55 expected readdir failure: open /tmp/558197793/mnt: read-only file system\r\n2016/01/25 23:15:55 error accessing deletion marker: DELETIONS/d41d8cd98f00b204-file2\r\n2016/01/25 23:15:55 expected write failure: open /tmp/558197793/mnt/file2: read-only file system\r\n--- FAIL: TestUnionFsFdLeak (0.02s)\r\n\tunionfs_test.go:1317: /proc/self/fd changed size: after 9 before 8\r\n2016/01/25 23:15:56 Found linked inode, but Nlink == 1 file\r\nFAIL\r\n```"},"comment":{"url":"https://api.github.com/repos/hanwen/go-fuse/issues/comments/174700688","html_url":"https://github.com/hanwen/go-fuse/issues/96#issuecomment-174700688","issue_url":"https://api.github.com/repos/hanwen/go-fuse/issues/96","id":174700688,"user":{"login":"rfjakob","id":286847,"avatar_url":"https://avatars.githubusercontent.com/u/286847?v=3","gravatar_id":"","url":"https://api.github.com/users/rfjakob","html_url":"https://github.com/rfjakob","followers_url":"https://api.github.com/users/rfjakob/followers","following_url":"https://api.github.com/users/rfjakob/following{/other_user}","gists_url":"https://api.github.com/users/rfjakob/gists{/gist_id}","starred_url":"https://api.github.com/users/rfjakob/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rfjakob/subscriptions","organizations_url":"https://api.github.com/users/rfjakob/orgs","repos_url":"https://api.github.com/users/rfjakob/repos","events_url":"https://api.github.com/users/rfjakob/events{/privacy}","received_events_url":"https://api.github.com/users/rfjakob/received_events","type":"User","site_admin":false},"created_at":"2016-01-25T22:28:44Z","updated_at":"2016-01-25T22:28:44Z","body":"Verbose test log: https://gist.github.com/rfjakob/0b7fafd6fff077169d7a"}}