#
bd793be3 |
| 24-Jan-2006 |
David Xu <davidxu@FreeBSD.org> |
More cleanup for aio code: 1) unregsiter kqueue filter for EVFILT_LIO. 2) free uma_zones. 3) call setsid directly to enter another session rather than implementing by itself.
Submitted by: jhb
|
#
7f34b521 |
| 24-Jan-2006 |
David Xu <davidxu@FreeBSD.org> |
Add bracket.
|
#
68d71118 |
| 23-Jan-2006 |
David Xu <davidxu@FreeBSD.org> |
Verify all supported notification types.
|
#
a9bf5e37 |
| 23-Jan-2006 |
David Xu <davidxu@FreeBSD.org> |
1) Merge _aio_aqueue and aio_aqueue, check quota in aio_aqueue, so that lio_listio won't exceed the quota. 2) Remove lio_ref_count, it is no longer used.
|
#
8c0d9af5 |
| 22-Jan-2006 |
David Xu <davidxu@FreeBSD.org> |
Fix a bogus panic.
|
#
9b84335c |
| 22-Jan-2006 |
David Xu <davidxu@FreeBSD.org> |
Decrease kaio_active_count first, because user process may go away after we notified it.
|
#
1ce91824 |
| 22-Jan-2006 |
David Xu <davidxu@FreeBSD.org> |
Make aio code MP safe.
|
#
8213baf0 |
| 15-Jan-2006 |
Christian S.J. Peron <csjp@FreeBSD.org> |
Initialize ki to p->p_aioinfo after we know it's going to be referencing a valid kaioinfo structure. This avoids a potential NULL pointer dereference.
Found with: Coverity Prevent(tm) MFC after: 2 w
Initialize ki to p->p_aioinfo after we know it's going to be referencing a valid kaioinfo structure. This avoids a potential NULL pointer dereference.
Found with: Coverity Prevent(tm) MFC after: 2 weeks
show more ...
|
#
af56abaa |
| 06-Jan-2006 |
John Baldwin <jhb@FreeBSD.org> |
Return error from fget_write() rather than hardcoding EBADF now that fget_write() DTRT.
Requested by: bde
|
#
323fe565 |
| 09-Nov-2005 |
David Xu <davidxu@FreeBSD.org> |
In aio_waitcomplete, do not return EAGAIN if no other threads have started aio, instead, initialize aio management structure if it hasn't been done, the reason to adjust this behavior is to make it a
In aio_waitcomplete, do not return EAGAIN if no other threads have started aio, instead, initialize aio management structure if it hasn't been done, the reason to adjust this behavior is to make it a bit friendly for threaded program, consider two threads, one submits aio_write, and another just calls aio_waitcomplete to wait any I/O to be completed and recycle the aio requests, before submitter doing any I/O, the recycler wants to wait in kernel. This also fixes inconsistency with other aio syscalls.
show more ...
|
#
2a522eb9 |
| 08-Nov-2005 |
John Baldwin <jhb@FreeBSD.org> |
Various and sundry cleanups: - Use curthread for calls to knlist_delete() and add a big comment explaining why as well as appropriate assertions. - Use TAILQ_FOREACH and TAILQ_FOREACH_SAFE instead
Various and sundry cleanups: - Use curthread for calls to knlist_delete() and add a big comment explaining why as well as appropriate assertions. - Use TAILQ_FOREACH and TAILQ_FOREACH_SAFE instead of handrolling them. - Use fget() family of functions to lookup file objects instead of grovelling around in file descriptor tables. - Destroy the aio_freeproc mutex if we are unloaded.
Tested on: i386
show more ...
|
#
8f0371f1 |
| 04-Nov-2005 |
David Xu <davidxu@FreeBSD.org> |
Fix name compatible problem with POSIX standard. the sigval_ptr and sigval_int really should be sival_ptr and sival_int. Also sigev_notify_function accepts a union sigval value but not a pointer.
|
#
4c0fb2cf |
| 03-Nov-2005 |
David Xu <davidxu@FreeBSD.org> |
Support sending realtime signal information via signal queue, realtime signal memory is pre-allocated, so kernel can always notify user code.
|
Revision tags: release/6.0.0_cvs, release/6.0.0 |
|
#
68a17869 |
| 01-Nov-2005 |
John Baldwin <jhb@FreeBSD.org> |
Push down Giant into fdfree() and remove it from two of the callers. Other callers such as some rfork() cases weren't locking Giant anyway.
Reviewed by: csjp MFC after: 1 week
|
#
0972628a |
| 30-Oct-2005 |
David Xu <davidxu@FreeBSD.org> |
Fix sigevent's POSIX incompatible problem by adding member fields sigev_notify_function and sigev_notify_attributes. AIO syscalls use sigevent, so they have to be adjusted.
Reviewed by: alc
|
#
db43cd04 |
| 13-Oct-2005 |
Doug Ambrisko <ambrisko@FreeBSD.org> |
Fix tinderbox box by removing incomplete/bad spl usage. Proper giant free locking is required in for aio.
Pointed out by: imp
|
#
69cd28da |
| 12-Oct-2005 |
Doug Ambrisko <ambrisko@FreeBSD.org> |
Add in kqueue support to LIO event notification and fix how it handled notifications when LIO operations completed. These were the problems with LIO event complete notification: - Move all LIO
Add in kqueue support to LIO event notification and fix how it handled notifications when LIO operations completed. These were the problems with LIO event complete notification: - Move all LIO/AIO event notification into one general function so we don't have bugs in different data paths. This unification got rid of several notification bugs one of which if kqueue was used a SIGILL could get sent to the process. - Change the LIO event accounting to count all AIO request that could have been split across the fast path and daemon mode. The prior accounting only kept track of AIO op's in that mode and not the entire list of operations. This could cause a bogus LIO event complete notification to occur when all of the fast path AIO op's completed and not the AIO op's that ended up queued for the daemon.
Suggestions from: alc
show more ...
|
#
ec9c9e73 |
| 20-Jul-2005 |
Alan Cox <alc@FreeBSD.org> |
Eliminate inconsistency in the setting of the B_DONE flag. Specifically, make the b_iodone callback responsible for setting it if it is needed. Previously, it was set unconditionally by bufdone() wi
Eliminate inconsistency in the setting of the B_DONE flag. Specifically, make the b_iodone callback responsible for setting it if it is needed. Previously, it was set unconditionally by bufdone() without holding whichever lock is shared by the b_iodone callback and the corresponding top-half function. Consequently, in a race, the top-half function could conclude that operation was done before the b_iodone callback finished. See, for example, aio_physwakeup() and aio_fphysio().
Note: I don't believe that the other, more widely-used b_iodone callbacks are affected.
Discussed with: jeff Reviewed by: phk MFC after: 2 weeks
show more ...
|
#
571dcd15 |
| 01-Jul-2005 |
Suleiman Souhlal <ssouhlal@FreeBSD.org> |
Fix the recent panics/LORs/hangs created by my kqueue commit by:
- Introducing the possibility of using locks different than mutexes for the knlist locking. In order to do this, we add three argumen
Fix the recent panics/LORs/hangs created by my kqueue commit by:
- Introducing the possibility of using locks different than mutexes for the knlist locking. In order to do this, we add three arguments to knlist_init() to specify the functions to use to lock, unlock and check if the lock is owned. If these arguments are NULL, we assume mtx_lock, mtx_unlock and mtx_owned, respectively.
- Using the vnode lock for the knlist locking, when doing kqueue operations on a vnode. This way, we don't have to lock the vnode while holding a mutex, in filt_vfsread.
Reviewed by: jmg Approved by: re (scottl), scottl (mentor override) Pointyhat to: ssouhlal Will be happy: everyone
show more ...
|
#
b490cc72 |
| 07-Jun-2005 |
Alan Cox <alc@FreeBSD.org> |
In lio_listio(2) change jobref from an int to a long so that lio_listio(LIO_WAIT, ...) works correctly on 64-bit architectures.
Reviewed by: tegge
|
#
67b95a95 |
| 05-Jun-2005 |
Alan Cox <alc@FreeBSD.org> |
Eliminate an unused field from struct aio_liojob.
|
#
bbe7bbdf |
| 04-Jun-2005 |
Alan Cox <alc@FreeBSD.org> |
Eliminate the original method of requesting notification of aio_read(2) and aio_write(2) completion through kevent(2). This method does not work on 64-bit architectures. It was deprecated in FreeBS
Eliminate the original method of requesting notification of aio_read(2) and aio_write(2) completion through kevent(2). This method does not work on 64-bit architectures. It was deprecated in FreeBSD 4.4. See revisions 1.87 and 1.70.2.7.
Change aio_physwakeup() to call psignal(9) directly rather than indirectly through a timeout(9). Discussed with: bde
Correct a bug introduced in revision 1.65 that could result in premature delivery of a signal if an lio_listio(2) consisted of a mixture of direct/raw and queued I/O operations. Observed by: tegge
Eliminate a field from struct kaioinfo that is now unused.
Reviewed by: tegge
show more ...
|
#
3769f562 |
| 03-Jun-2005 |
Alan Cox <alc@FreeBSD.org> |
Synchronize access to the per process aiocb lists in many of the functions.
|
#
e293dc86 |
| 03-Jun-2005 |
Alan Cox <alc@FreeBSD.org> |
In aio_waitcomplete() correct two cases of using an aiocb after freeing it.
|
#
3148c2c9 |
| 31-May-2005 |
Alan Cox <alc@FreeBSD.org> |
Synchronize access to aio_freeproc with a mutex. Eliminate related spl calls.
Reduce the scope of Giant in aio_daemon().
|