Revision tags: release/6.2.0_cvs, release/6.2.0 |
|
#
d6b910d2 |
| 10-Sep-2006 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Delay an orphan event if provider has still in-flight I/O requests. This way GEOM classes can safely detach from provider when an orphan event is received. This fixes 'detach with active requests' pa
Delay an orphan event if provider has still in-flight I/O requests. This way GEOM classes can safely detach from provider when an orphan event is received. This fixes 'detach with active requests' panic for gstripe/gconcat under load.
PR: kern/102766 Submitted by: mjacob OK'ed by: phk MFC after: 1 week
show more ...
|
Revision tags: release/5.5.0_cvs, release/5.5.0, release/6.1.0_cvs, release/6.1.0, release/6.0.0_cvs, release/6.0.0 |
|
#
e4da09c0 |
| 04-Sep-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove a race condition that could result in processes being stuck waiting for geom events to happen:
Instead of maintaining a count of outstanding events, simply look if the queue is empty. Make s
Remove a race condition that could result in processes being stuck waiting for geom events to happen:
Instead of maintaining a count of outstanding events, simply look if the queue is empty. Make sure to not remove events from the queue until they are executed in order to not open a new race.
Much work by: pjd Tested by: kris MT6: yes, should be.
show more ...
|
#
d246aa55 |
| 18-May-2005 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Correct typo.
|
Revision tags: release/5.4.0_cvs, release/5.4.0, release/4.11.0_cvs, release/4.11.0 |
|
#
b8005b9b |
| 10-Nov-2004 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Introduce g_waitidlelock() function which is simlar to g_waitidle(), but should be called with the topology lock held and returns with the topology lock held and empty event queue.
Approved by: phk
Introduce g_waitidlelock() function which is simlar to g_waitidle(), but should be called with the topology lock held and returns with the topology lock held and empty event queue.
Approved by: phk (sometime ago)
show more ...
|
Revision tags: release/5.3.0_cvs, release/5.3.0 |
|
#
9197ce2e |
| 23-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a new per-thread private flag: TDP_GEOM.
This flag gets set whenever the thread posts an event on the GEOM event queue, and if the flag is set when the thread is prepared to return to userland f
Add a new per-thread private flag: TDP_GEOM.
This flag gets set whenever the thread posts an event on the GEOM event queue, and if the flag is set when the thread is prepared to return to userland from the kernel, g_waitidle() will be called to make sure that the posted events have completed.
This can replace an insufficient number of g_waitidle() calls in various other places, and has the advantage of being failsafe: Any system call which does a VOP_OPEN()/VOP_CLOSE will now correctly wait for any geom events it posted as part of spoils or tastes.
Assert that topology and Giant is not held in g_waitidle().
show more ...
|
#
1b464bd8 |
| 08-Jul-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make withering water tight.
When we orphan/wither a provider, an attached geom+consumer could end up being withered as a result and it may be in front of us in the normal object scanning order so we
Make withering water tight.
When we orphan/wither a provider, an attached geom+consumer could end up being withered as a result and it may be in front of us in the normal object scanning order so we need to do multi-pass. On the other hand, there may be withering stuff we can't get rid off (yet), so we need to keep track of both the existence of withering stuff and if there is more we can do at this time.
show more ...
|
Revision tags: release/4.10.0_cvs, release/4.10.0 |
|
#
3d1d5bc3 |
| 10-Mar-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Rearrange some of the GEOM debugging tools to be more structured.
Retire g_sanity() and corresponding debugflag (0x8)
Retire g_{stall,release}_events().
Under #ifdef DIAGNOSTIC:
Make g_
Rearrange some of the GEOM debugging tools to be more structured.
Retire g_sanity() and corresponding debugflag (0x8)
Retire g_{stall,release}_events().
Under #ifdef DIAGNOSTIC:
Make g_valid_obj() an official function and have it return an an non-zero integer which indicates the kind of object when found.
Implement G_VALID_{CLASS,GEOM,CONSUMER,PROVIDER}() macros based on g_valid_obj().
Sprinkle calls to these macros liberally over the infrastructure.
Always check that we do not free a live object.
show more ...
|
Revision tags: release/5.2.1_cvs, release/5.2.1 |
|
#
18e88d82 |
| 10-Feb-2004 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Now we have g_topology_assert_not(), so use it to detect deadlocks.
Approved by: phk, scottl (mentor)
|
#
793ffa8e |
| 02-Feb-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Don't mingle malloc/g_event flags.
Spotted by: pjd@
|
#
57ab2e04 |
| 23-Jan-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make sure to keep track of canceled events.
Submitted by: Pawel Jakub Dawidek <nick@garage.freebsd.pl>
|
Revision tags: release/5.2.0_cvs, release/5.2.0 |
|
#
8592d7a7 |
| 23-Dec-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Prevent withering of the provider we're orphaning from happening until we do it ourselves.
Nailed by: Simon Heath <heath@cng.fr>
|
#
d0265773 |
| 07-Dec-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
KASSERT against multiple orphanings of providers.
|
#
e0d617c1 |
| 18-Nov-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Fix a harmless bug and add a ')' in a debugging printf.
Submitted by: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
|
Revision tags: release/4.9.0_cvs, release/4.9.0 |
|
#
b144e6ff |
| 12-Oct-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Destroy providers maked with G_PF_WITHER when the last consumer has detached.
|
#
50b1faef |
| 11-Jun-2003 |
David E. O'Brien <obrien@FreeBSD.org> |
Use __FBSDID().
Approved by: phk
|
#
a1a9b445 |
| 07-Jun-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add missing va_end() calls.
Noticed by: tmm
|
Revision tags: release/5.1.0_cvs, release/5.1.0 |
|
#
9dfffbc9 |
| 02-May-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Get rid of trivial function g_destroy_event().
|
#
c8589ad1 |
| 01-May-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add a new flag, EV_CANCELED, and use it to make g_waitfor_event() return EAGAIN if an event got canceled.
|
#
2ab31b05 |
| 01-May-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
When events on a reference is cancelled, check our doorstep first, it might be an orphan.
|
#
0a9c130c |
| 23-Apr-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Introduce a g_waitfor_event() function which posts an event and waits for it to be run (or cancelled) and use this instead of home-rolled versions.
|
#
a974614b |
| 23-Apr-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
More of the event stuff can now be private to geom_event.c
|
#
8cd1535a |
| 23-Apr-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Rename g_call_me() to g_post_event(), and give it a flag argument to determine if we can M_WAITOK in malloc.
|
#
d98777f8 |
| 23-Apr-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove the now unused hardcoded g_post_event() event support.
|
#
9ab3ea78 |
| 23-Apr-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Turn EV_NEW_PROVIDER into a g_call_me() event.
|
#
f2e9a094 |
| 23-Apr-2003 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Convert EV_SPOILED event to use g_call_me().
|