Page MenuHomeFreeBSD

D26374.id76812.diff
No OneTemporary

D26374.id76812.diff

Index: sys/geom/geom_event.c
===================================================================
--- sys/geom/geom_event.c
+++ sys/geom/geom_event.c
@@ -374,6 +374,9 @@
if (epp != NULL)
*epp = ep;
curthread->td_pflags |= TDP_GEOM;
+ thread_lock(curthread);
+ curthread->td_flags |= TDF_ASTPENDING;
+ thread_unlock(curthread);
return (0);
}
Index: sys/kern/subr_trap.c
===================================================================
--- sys/kern/subr_trap.c
+++ sys/kern/subr_trap.c
@@ -138,13 +138,6 @@
MPASS(td->td_su == NULL);
/*
- * If this thread tickled GEOM, we need to wait for the giggling to
- * stop before we return to userland
- */
- if (__predict_false(td->td_pflags & TDP_GEOM))
- g_waitidle();
-
- /*
* Charge system time if profiling.
*/
if (__predict_false(p->p_flag & P_PROFIL))
@@ -289,6 +282,13 @@
ktrcsw(0, 1, __func__);
#endif
}
+
+ /*
+ * If this thread tickled GEOM, we need to wait for the giggling to
+ * stop before we return to userland
+ */
+ if (__predict_false(td->td_pflags & TDP_GEOM))
+ g_waitidle();
#ifdef DIAGNOSTIC
if (p->p_numthreads == 1 && (flags & TDF_NEEDSIGCHK) == 0) {

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 4:12 AM (14 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28535083
Default Alt Text
D26374.id76812.diff (1 KB)

Event Timeline