summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_aio.c
Commit message (Collapse)AuthorAgeFilesLines
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.alfred2003-01-211-8/+8
| | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
* Close the remaining user address mapping races for physicaldillon2003-01-201-2/+13
| | | | | | | I/O, CAM, and AIO. Still TODO: streamline useracc() checks. Reviewed by: alc, tegge MFC after: 7 days
* style(9) fixes, mostly add parens around return arguments.alfred2003-01-131-63/+65
|
* Bow to the whining masses and change a union back into void *. Retaindillon2003-01-131-6/+6
| | | | | removal of unnecessary casts and throw in some minor cleanups to see if anyone complains, just for the hell of it.
* Allowing nent < 0 in aio_suspend() and lio_listio() is just asking fortjr2003-01-121-2/+2
| | | | trouble. Return EINVAL instead.
* Remove "XXX undocumented" comment from lio_listio().tjr2003-01-121-1/+1
|
* Change struct file f_data to un_data, a union of the correct structdillon2003-01-121-6/+6
| | | | | | | | | | pointer types, and remove a huge number of casts from code using it. Change struct xfile xf_data to xun_data (ABI is still compatible). If we need to add a #define for f_data and xf_data we can, but I don't think it will be necessary. There are no operational changes in this commit.
* Remove unused second argument from DEV_STRATEGY().phk2003-01-031-1/+1
|
* Lock filedesc while performing a range check on the file descriptor.alfred2002-12-271-0/+4
| | | | Reviewed by: alc
* Rework the sysconf(3) interaction with aio:alfred2002-11-171-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | sysconf.c: Use 'break' rather than 'goto yesno' in sysconf.c so that we report a '0' return value from the kernel sysctl. vfs_aio.c: Make aio reset its configuration parameters to -1 after unloading instead of 0. posix4_mib.c: Initialize the aio configuration parameters to -1 to indicate that it is not loaded. Add a facility (p31b_iscfg()) to determine if a posix4 facility has been initialized to avoid having to re-order the SYSINITs. Use p31b_iscfg() to determine if aio has had a chance to run yet which is likely if it is compiled into the kernel and avoid spamming its values. Introduce a macro P31B_VALID() instead of doing the same comparison over and over. posix4.h: Prototype p31b_iscfg().
* Export the values for _SC_AIO_MAX and _SC_AIO_PRIO_DELTA_MAX via the p1003balfred2002-11-161-0/+4
| | | | sysctl interface.
* Call 'p31b_setcfg(CTL_P1003_1B_AIO_LISTIO_MAX, AIO_LISTIO_MAX)'alfred2002-11-161-0/+3
| | | | | | when AIO is initialized so that sysconf() gives correct results. Reported by: Craig Rodrigues <rodrigc@attbi.com>
* Do a bit more work in the aio code to simulate the credential environmentrwatson2002-11-071-0/+7
| | | | | | | | | | | | | | | of the original AIO request: save and restore the active thread credential as well as using the file credential, since MAC (and some other bits of the system) rely on the thread credential instead of/as well as the file credential. In brief: cache td->td_ucred when the AIO operation is queued, temporarily set and restore the kernel thread credential, and release the credential when done. Similar to ktrace credential management. Reviewed by: alc Approved by: re Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
* Change the way support for asynchronous I/O is indicated to applicationswollman2002-10-271-0/+2
| | | | | | | | | | to conform to 1003.1-2001. Make it possible for applications to actually tell whether or not asynchronous I/O is supported. Since FreeBSD's aio implementation works on all descriptor types, don't call down into file or vnode ops when [f]pathconf() is asked about _PC_ASYNC_IO; this avoids the need for every file and vnode op to know about it.
* fdfree() clears p_fd for us, no need to do it again.jhb2002-10-181-1/+0
|
* Eliminate the unnecessary clearing of flag bits that are already clearalc2002-10-141-4/+1
| | | | in lio_listio(2).
* Some kernel threads try to do significant work, and the default KSTACK_PAGESscottl2002-10-021-1/+1
| | | | | | | | | | | | | doesn't give them enough stack to do much before blowing away the pcb. This adds MI and MD code to allow the allocation of an alternate kstack who's size can be speficied when calling kthread_create. Passing the value 0 prevents the alternate kstack from being created. Note that the ia64 MD code is missing for now, and PowerPC was only partially written due to the pmap.c being incomplete there. Though this patch does not modify anything to make use of the alternate kstack, acpi and usb are good candidates. Reviewed by: jake, peter, jhb
* Replace (ab)uses of "NULL" where "0" is really meant.archie2002-08-221-1/+1
|
* o Remove the AIOCBLIST_ASYNCFREE flag and related code. It's never set.alc2002-08-221-19/+2
| | | | Submitted by: Romer Gil <rgil@cs.rice.edu>
* o Make a correction to the last change: In aio_cancel(2) return AIO_ALLDONEalc2002-08-111-2/+2
| | | | instead of EINVAL if p->p_aioinfo is NULL.
* o In aio_cancel(2), make sure that p->p_aioinfo isn't NULL beforealc2002-08-111-0/+2
| | | | | | dereferencing it. Submitted by: saureen <sshah@apple.com>
* Set the ident field of the struct kevent that is registered by _aio_aqueue()alc2002-08-061-4/+5
| | | | | | | | to the address of the user's aiocb rather than the kernel's aiocb. (In other words, prior to this change, the ident field returned by kevent(2) on completion of an AIO was effectively garbage.) Submitted by: Romer Gil <rgil@cs.rice.edu>
* o The introduction of kevent() broke lio_listio(): _aio_aqueue() thoughtalc2002-08-051-6/+6
| | | | | | | | | | | | | that LIO_READ and LIO_WRITE were requests for kevent()-based notification of completion. Modify _aio_aqueue() to recognize LIO_READ and LIO_WRITE. Notes: (1) The patch provided by the PR perpetuates a second bug in this code, a direct access to user-space memory. This change fixes that bug as well. (2) This change is to code that implements a deprecated interface. It should probably be removed after an MFC. PR: kern/39556
* Back out my lats commit of locking down a socket, it conflicts with hsu's work.tanimura2002-05-311-3/+0
| | | | Requested by: hsu
* o Remove some unnecessary casting from and add some necessary casting toalc2002-05-251-3/+3
| | | | | | aio_suspend() and lio_listio(). Submitted by: bde
* Fix warnings. Also, removed an unused variable that I found that was justpeter2002-05-241-6/+4
| | | | initialized and never used afterwards.
* Lock down a socket, milestone 1.tanimura2002-05-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o Add a mutex (sb_mtx) to struct sockbuf. This protects the data in a socket buffer. The mutex in the receive buffer also protects the data in struct socket. o Determine the lock strategy for each members in struct socket. o Lock down the following members: - so_count - so_options - so_linger - so_state o Remove *_locked() socket APIs. Make the following socket APIs touching the members above now require a locked socket: - sodisconnect() - soisconnected() - soisconnecting() - soisdisconnected() - soisdisconnecting() - sofree() - soref() - sorele() - sorwakeup() - sotryfree() - sowakeup() - sowwakeup() Reviewed by: alfred
* As malloc(9) and free(9) are now Giant-free, remove the Giant locktanimura2002-05-031-1/+1
| | | | across malloc(9) and free(9) of a pgrp or a session.
* Push down Giant for setpgid(), setsid() and aio_daemon(). Giant protects onlytanimura2002-04-201-0/+2
| | | | malloc(9) and free(9).
* Lock proctree_lock instead of pgrpsess_lock.jhb2002-04-161-2/+2
|
* o Use aiocblist::fd_file in the AIO threads rather than recomputingalc2002-04-141-45/+3
| | | | | | the file * from the calling process's descriptor table. o Eliminate sharing of the calling process's descriptor table with the AIO threads.
* Restructure aio_return() to eliminate duplicated code and facilitate Giantalc2002-04-081-21/+15
| | | | push down.
* Reduce the duplication of code for error handling in _aio_aqueue().alc2002-04-071-19/+7
|
* Change jobref and *ijoblist from int to long in order to avoidalc2002-04-071-3/+3
| | | | a catastrophe after the 2^32nd AIO operation on 64-bit architectures.
* o aio_process needn't fhold()/fdrop() the fp now that _aio_aqueue() andalc2002-04-041-13/+6
| | | | | | aio_free_entry() do this. o Remove two unnecessary/unused variables from aio_process() and one field from aiocblist.
* Keep the reference to the file acquired in _aio_aqueue() until the operationalc2002-03-311-3/+7
| | | | | | completes. The reference is released in aio_free_entry(). Submitted by: tegge
* Added used include of <sys/sx.h>. Don't depend on namespace pollution inbde2002-03-251-0/+1
| | | | <sys/file.h> or <sys/socketvar.h>.
* Remove references to vm_zone.h and switch over to the new uma API.jeff2002-03-201-40/+45
| | | | | Also, remove maxsockets. If you look carefully you'll notice that the old zone allocator never honored this anyway.
* Document all functions, global and static variables, and sysctls.eivind2002-03-051-43/+80
| | | | | | | | Includes some minor whitespace changes, and re-ordering to be able to document properly (e.g, grouping of variables and the SYSCTL macro calls for them, where the documentation has been added.) Reviewed by: phk (but all errors are mine)
* Lock struct pgrp, session and sigio.tanimura2002-02-231-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | New locks are: - pgrpsess_lock which locks the whole pgrps and sessions, - pg_mtx which protects the pgrp members, and - s_mtx which protects the session members. Please refer to sys/proc.h for the coverage of these locks. Changes on the pgrp/session interface: - pgfind() needs the pgrpsess_lock held. - The caller of enterpgrp() is responsible to allocate a new pgrp and session. - Call enterthispgrp() in order to enter an existing pgrp. - pgsignal() requires a pgrp lock held. Reviewed by: jhb, alfred Tested on: cvsup.jp.FreeBSD.org (which is a quad-CPU machine running -current)
* o Clearing p/td_retval[0] after aio_newproc() is unnecessary. (We stoppedalc2002-02-121-6/+1
| | | | | calling rfork() to create aio threads in revision 1.46.) o Don't recompute the FILE * when it's already stored in the kernel's AIOCB.
* Pre-KSE/M3 commit.julian2002-02-071-4/+4
| | | | | | | | | | this is a low-functionality change that changes the kernel to access the main thread of a process via the linked list of threads rather than assuming that it is embedded in the process. It IS still embeded there but remove all teh code that assumes that in preparation for the next commit which will actually move it out. Reviewed by: peter@freebsd.org, gallatin@cs.duke.edu, benno rice,
* o Remove the unused vestiges of JOBST_JOBQPROC andalc2002-01-201-15/+1
| | | | | the per-thread jobtorun queue. o Use TAILQ_EMPTY() instead of TAILQ_FIRST(...) == NULL.
* o Revision 1.99 ("KSE Milestone 2") left the aio daemonsalc2002-01-201-2/+2
| | | | | | | | | sleeping on a process object but changed the corresponding wakeup()s to the thread object. The result was that non-raw aio ops waited for an aio daemon to timeout before action was taken. Now, we sleep on the thread object. PR: kern/34016
* o Eliminate an unused parameter from aio_fphysio().alc2002-01-171-3/+3
|
* o Correct the initialization of aiolio_zone: Each entry was 16 times largeralc2002-01-141-13/+5
| | | | | | | | | than necessary. o Move a rarely-used goto label inside a critical section so that we don't perform an splnet() for which there is no corresponding splx(). o Remove unnecessary splnet()/splx() around accesses to kaioinfo::kaio_jobdone in aio_return(). o Use TAILQ_FOREACH for simple cases of iteration over kaioinfo::kaio_jobdone.
* o Correct a 32/64-bit error in the initialization of aiol_zone, specifically,alc2002-01-091-1/+1
| | | | sizeof(int) is not the size of a pointer.
* o Add missing synchronization (splnet()/splx()) in aio_free_entry().alc2002-01-061-1/+27
| | | | | o Move the definition of struct aiocblist from sys/aio.h to kern/vfs_aio.c. o Make aio_swake_cb() static.
* o Properly check the file descriptor passed to aio_cancel(2). (Previously,alc2002-01-021-14/+3
| | | | | no out-of-bounds check was performed on the file descriptor.) o Eliminate some excessive white space from aio_cancel(2).
* o Some style(9)-motivated changes to white space.alc2002-01-011-13/+13
|
OpenPOWER on IntegriCloud