-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hang in setxattr on zfs mount point #5124
Comments
After a reboot I couldn't reproduce the problem :-( |
@cgaspar for reference: what is the value of
(where foo is the name of your pool) when was the pool created (which which ZFS version) ?
are any special features enabled ? In what way are you accessing the pool via netatalk ? What's the status of selinux ? |
So it's possible a snapshot race could be involved This was netatalk trying to launch itself, it didn't get far enough to actually respond to network clients selinux:
|
It looks like the filesystem is now completely dead. Any filesystem access to it hangs. Sadly kdump appears to go into some loop and fail, so I can't grab a crash dump :-( |
@cgaspar if you can check the console log by running |
I used zfs send/recv to copy the filesystem to a different pool on the same host. I copied the original solaris->linux snapshot and a more recent snapshot. Both get stuck in the kernel on any access. I did a sysrq-l and sysrq-t, output is attached. I guess next step is to try rolling back to an older kernel with an older zfs version and see what happens. |
Rolling back to 4.6.5-300.fc24.x86_64 + zfs 0.6.5.8 restored service. So some combination of 4.7.3-200.fc24.x86_64 and zfs 0.6.5.8 appears to be toxic with this filesystem. I'm happy to build/install/run anything that might help track down the problem. |
@cgaspar |
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes openzfs#5124 Closes openzfs#5141 Closes openzfs#5147 Closes openzfs#5148 Requires-builders: style
We must not use d_add_ci if the dentry already has the real name. Otherwise, d_add_ci()->d_alloc_parallel() will find itself on the lookup hash and wait on itself causing deadlock. Tested-by: satmandu Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Chunwei Chen <[email protected]> Closes #5124 Closes #5141 Closes #5147 Closes #5148
netatalk becomes unkillable (kernel 4.7.3-200.fc24.x86_64, zfs 0.6.5.8). strace shows:
...
lstat("/export/cimedia", {st_mode=S_IFDIR|S_ISGID|0775, st_size=15, ...}) = 0
getxattr("/export/cimedia", "system.posix_acl_access", 0x7ffd1ac3dc40, 132) = -1 EOPNOTSUPP (Operation not supported)
lgetxattr("/export/cimedia", "user.org.netatalk.has-Extended-A"..., 0x7ffd1ac3e460, 4) = -1 ENODATA (No data available)
getuid() = 0
geteuid() = 0
setresuid(-1, 0, -1) = 0
setxattr("/export/cimedia", "user.org.netatalk.has-Extended-A"..., "yes", 4, 0
and the process is stuck in the kernel forever...
The text was updated successfully, but these errors were encountered: