This repository has been archived by the owner on Feb 26, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 178
Disabled rw_tryupgrade() for newer kernels #2
Labels
Comments
It turns out this isn't proving to be an issue in practice, I'm closing the bug. |
FransUrbo
pushed a commit
to FransUrbo/spl
that referenced
this issue
Apr 11, 2013
Fix scatterlists temporarily with tmp buffer
delphix-devops-bot
pushed a commit
to delphix-devops-bot/spl
that referenced
this issue
May 8, 2018
tonyhutter
added a commit
to tonyhutter/spl
that referenced
this issue
Jan 30, 2019
(This is the ported SPL portion of this patch) The bug time sequence: 1. thread openzfs#1, `zfs_write` assign a txg "n". 2. In a same process, thread openzfs#2, mmap page fault (which means the `mm_sem` is hold) occurred, `zfs_dirty_inode` open a txg failed, and wait previous txg "n" completed. 3. thread openzfs#1 call `uiomove` to write, however page fault is occurred in `uiomove`, which means it need `mm_sem`, but `mm_sem` is hold by thread openzfs#2, so it stuck and can't complete, then txg "n" will not complete. So thread openzfs#1 and thread openzfs#2 are deadlocked. Reviewed-by: Chunwei Chen <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Matthew Ahrens <[email protected]> Signed-off-by: Grady Wong <[email protected]> Closes #7939
tonyhutter
added a commit
that referenced
this issue
Mar 4, 2019
(This is the ported SPL portion of this patch) The bug time sequence: 1. thread #1, `zfs_write` assign a txg "n". 2. In a same process, thread #2, mmap page fault (which means the `mm_sem` is hold) occurred, `zfs_dirty_inode` open a txg failed, and wait previous txg "n" completed. 3. thread #1 call `uiomove` to write, however page fault is occurred in `uiomove`, which means it need `mm_sem`, but `mm_sem` is hold by thread #2, so it stuck and can't complete, then txg "n" will not complete. So thread #1 and thread #2 are deadlocked. Reviewed-by: Chunwei Chen <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Matthew Ahrens <[email protected]> Signed-off-by: Grady Wong <[email protected]> Closes #7939
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
VERIFY(rc = rw_tryenter_locked(SEM(&dn->dn_struct_rwlock))) failed
SPLError: 24204:0:(dnode.c:923:dnode_new_blkid()) SBUG
For kernels using the CONFIG_RWSEM_GENERIC_SPINLOCK implementation everything is fine. But if your kernel is building with the arch specific rwsems then rw_tryupgrade() has been disabled until it can be implemented correctly. In particular, the x86 implementation now leverages atomic primitives for serialization rather than spinlocks. So to get this working again it will need to be implemented as a cmpxchg for x86 and likely something similar for other arches we are interested in. For now it's safest to simply disable it.
The text was updated successfully, but these errors were encountered: