1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-16 10:20:30 +00:00
freebsd/sys/kern
Matthew Dillon ac8f990bde This patch implements O_DIRECT about 80% of the way. It takes a patchset
Tor created a while ago, removes the raw I/O piece (that has cache coherency
problems), and adds a buffer cache / VM freeing piece.

Essentially this patch causes O_DIRECT I/O to not be left in the cache, but
does not prevent it from going through the cache, hence the 80%.  For
the last 20% we need a method by which the I/O can be issued directly to
buffer supplied by the user process and bypass the buffer cache entirely,
but still maintain cache coherency.

I also have the code working under -stable but the changes made to sys/file.h
may not be MFCable, so an MFC is not on the table yet.

Submitted by:	tegge, dillon
2001-05-24 07:22:27 +00:00
..
bus_if.m
device_if.m
genassym.sh
gensetdefs.pl Generate useful error messages. 2001-04-13 09:37:25 +00:00
imgact_aout.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
imgact_elf.c Lock the VM while twiddling the vmspace. 2001-05-23 22:05:08 +00:00
imgact_gzip.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
imgact_shell.c
inflate.c
init_main.c - Lock the VM when initializing the vmspace for proc0. 2001-05-23 22:06:47 +00:00
init_sysent.c Regen syscalls that were made mpsafe via vm_mtx 2001-05-19 01:37:12 +00:00
kern_acct.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_acl.c o As part of the move to not maintaining copies of the vnode owning uid 2001-04-29 19:53:50 +00:00
kern_cap.c
kern_clock.c Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
kern_condvar.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_conf.c Call strlen() once instead of twice. 2001-04-14 21:33:58 +00:00
kern_descrip.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_environment.c
kern_event.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_exec.c Axe unneeded spl()'s. 2001-05-21 18:30:50 +00:00
kern_exit.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
kern_fork.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
kern_idle.c - Split out the support for per-CPU data from the SMP code. UP kernels 2001-05-10 17:45:49 +00:00
kern_intr.c - Remove the global ithread_list_lock spin lock in favor of per-ithread 2001-05-17 22:43:26 +00:00
kern_jail.c
kern_kthread.c Convert the allproc and proctree locks from lockmgr locks to sx locks. 2001-03-28 11:52:56 +00:00
kern_ktr.c Switch from save/disable/restore_intr() to critical_enter/exit(). 2001-03-28 03:06:10 +00:00
kern_ktrace.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_linker.c o Actually extract version of interface and store it along with the name. 2001-03-22 08:58:45 +00:00
kern_lock.c Instead of asserting that a mutex is not still locked after unlocking it, 2001-04-28 12:11:01 +00:00
kern_lockf.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_malloc.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_mib.c Overhaul of the SMP code. Several portions of the SMP kernel support have 2001-04-27 19:28:25 +00:00
kern_module.c
kern_mutex.c - Move state about lock objects out of struct lock_object and into a new 2001-05-04 17:15:16 +00:00
kern_ntptime.c Update to the 2001-04-02 version of the nanokernel code from Dave Mills. 2001-04-16 13:05:05 +00:00
kern_physio.c
kern_proc.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_prot.c o Modify access control checks in p_candebug() such that the policy is as 2001-05-17 21:48:44 +00:00
kern_random.c
kern_resource.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
kern_shutdown.c Revert consequences of changes to mount.h, part 2. 2001-04-29 02:45:39 +00:00
kern_sig.c - Remove unneeded include of sys/ipl.h. 2001-05-15 23:13:58 +00:00
kern_subr.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_switch.c Catch up to header include changes: 2001-03-28 09:17:56 +00:00
kern_sx.c - Move state about lock objects out of struct lock_object and into a new 2001-05-04 17:15:16 +00:00
kern_synch.c Add in assertions to ensure that we always call msleep or mawait with 2001-05-23 19:38:26 +00:00
kern_syscalls.c
kern_sysctl.c Add convenience function kernel_sysctlbyname() for kernel consumers, 2001-05-19 05:45:55 +00:00
kern_tc.c
kern_time.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
kern_timeout.c Catch up to header include changes: 2001-03-28 09:17:56 +00:00
kern_xxx.c This is kind of a hack, but it should work. Currently, world is broken 2001-03-24 04:40:49 +00:00
ksched.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
link_aout.c
link_elf_obj.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
link_elf.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
linker_if.m
Make.tags.inc - FDESC, FIFO, NULL, PORTAL, PROC, UMAP and UNION file 2001-05-23 09:42:29 +00:00
Makefile - FDESC, FIFO, NULL, PORTAL, PROC, UMAP and UNION file 2001-05-23 09:42:29 +00:00
makeobjops.pl Use getopt instead of a home grown one 2001-04-07 20:51:24 +00:00
makesyscalls.sh
md4c.c Import kernel part of SMB/CIFS requester. 2001-04-10 07:59:06 +00:00
md5c.c
p1003_1b.c o First step in cleaning up authorization code for the posix4 2001-05-06 16:15:42 +00:00
posix4_mib.c
subr_acl_posix1e.c o As part of the move to not maintaining copies of the vnode owning uid 2001-04-29 19:53:50 +00:00
subr_autoconf.c
subr_blist.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
subr_bus.c
subr_clist.c Make cblock_alloc_cblocks() spell its own name 2001-03-27 10:21:26 +00:00
subr_devstat.c
subr_disk.c Always initialize bio_resid from bio_bcount in the disk mini-layer so 2001-05-08 08:24:54 +00:00
subr_disklabel.c
subr_diskmbr.c
subr_diskslice.c
subr_eventhandler.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
subr_kobj.c
subr_log.c syslogd gets kernel log messages only once every 30 seconds or 2001-05-23 19:02:50 +00:00
subr_mchain.c
subr_module.c
subr_param.c
subr_pcpu.c - Split out the support for per-CPU data from the SMP code. UP kernels 2001-05-10 17:45:49 +00:00
subr_prf.c
subr_prof.c Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
subr_rman.c
subr_sbuf.c Rewrite of the CAM error recovery code. 2001-03-27 05:45:52 +00:00
subr_scanf.c
subr_smp.c - Split out the support for per-CPU data from the SMP code. UP kernels 2001-05-10 17:45:49 +00:00
subr_taskqueue.c remove include of ipl.h because it no longer exists 2001-05-16 02:52:06 +00:00
subr_trap.c Don't acquire Giant just to call trap_fatal(), we are about to panic 2001-05-23 22:58:09 +00:00
subr_turnstile.c - Move state about lock objects out of struct lock_object and into a new 2001-05-04 17:15:16 +00:00
subr_witness.c - Don't panic on a try lock operation for a sleep lock if we hold a spin 2001-05-17 22:44:56 +00:00
subr_xxx.c
sys_generic.c Back out scanning file descriptors with holding a process lock. 2001-05-15 10:19:57 +00:00
sys_pipe.c aquire vm_mutex a little bit earlier to protect a pmap call. 2001-05-23 10:26:36 +00:00
sys_process.c - FDESC, FIFO, NULL, PORTAL, PROC, UMAP and UNION file 2001-05-23 09:42:29 +00:00
sys_socket.c
syscalls.c Regen syscalls that were made mpsafe via vm_mtx 2001-05-19 01:37:12 +00:00
syscalls.master Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
sysv_ipc.c
sysv_msg.c
sysv_sem.c
sysv_shm.c Correct style bugs with regards to long lines and comments. 2001-05-23 23:38:05 +00:00
tty_compat.c
tty_conf.c
tty_cons.c Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
tty_pty.c Send the remains (such as I have located) of "block major numbers" to 2001-03-26 12:41:29 +00:00
tty_snoop.c Convert this driver to (ab?)use line disciplines to get the input it 2001-05-22 22:13:14 +00:00
tty_subr.c Make cblock_alloc_cblocks() spell its own name 2001-03-27 10:21:26 +00:00
tty_tty.c Support /dev/ctty again 2001-05-15 18:12:38 +00:00
tty.c Unifdef DEV_SNP; snp(4) no longer requires these ugly hacks. 2001-05-22 22:16:18 +00:00
uipc_accf.c
uipc_domain.c
uipc_mbuf2.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
uipc_mbuf.c Increment mbstat.m_mpfail, not mbstat.m_mcfail, when m_pullup() fails. 2001-05-23 20:44:54 +00:00
uipc_proto.c
uipc_sockbuf.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
uipc_socket2.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
uipc_socket.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
uipc_syscalls.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
uipc_usrreq.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
vfs_acl.c o As part of the move to not maintaining copies of the vnode owning uid 2001-04-29 19:53:50 +00:00
vfs_aio.c Check validity of signal callback requested via aio routines. 2001-04-18 22:18:39 +00:00
vfs_bio.c This patch implements O_DIRECT about 80% of the way. It takes a patchset 2001-05-24 07:22:27 +00:00
vfs_cache.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
vfs_cluster.c This patch implements O_DIRECT about 80% of the way. It takes a patchset 2001-05-24 07:22:27 +00:00
vfs_conf.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
vfs_default.c Don't release the vm lock just to turn around and grab it again. 2001-05-23 19:51:12 +00:00
vfs_export.c vfs_subr.c is getting rather fat. The underlying repocopy and this 2001-04-26 20:47:14 +00:00
vfs_extattr.c Don't release Giant around vm_oject_page_clean() in fsync() as the pager 2001-05-23 22:55:13 +00:00
vfs_init.c Revert consequences of changes to mount.h, part 2. 2001-04-29 02:45:39 +00:00
vfs_lookup.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
vfs_mount.c Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
vfs_subr.c Introduce a global lock for the vm subsystem (vm_mtx). 2001-05-19 01:28:09 +00:00
vfs_syscalls.c Don't release Giant around vm_oject_page_clean() in fsync() as the pager 2001-05-23 22:55:13 +00:00
vfs_vnops.c This patch implements O_DIRECT about 80% of the way. It takes a patchset 2001-05-24 07:22:27 +00:00
vnode_if.pl replace calls to non-existant bail() subroutine with calls to 2001-03-23 11:48:50 +00:00
vnode_if.src VOP_BALLOC was never really a VOP in the first place, so convert it 2001-04-29 12:36:52 +00:00