freebsd-dev/sys/kern
Kirk McKusick 9b97113391 This patch corrects the first round of panics and hangs reported
with the new snapshot code.

Update addaliasu to correctly implement the semantics of the old
checkalias function. When a device vnode first comes into existence,
check to see if an anonymous vnode for the same device was created
at boot time by bdevvp(). If so, adopt the bdevvp vnode rather than
creating a new vnode for the device. This corrects a problem which
caused the kernel to panic when taking a snapshot of the root
filesystem.

Change the calling convention of vn_write_suspend_wait() to be the
same as vn_start_write().

Split out softdep_flushworklist() from softdep_flushfiles() so that
it can be used to clear the work queue when suspending filesystem
operations.

Access to buffers becomes recursive so that snapshots can recursively
traverse their indirect blocks using ffs_copyonwrite() when checking
for the need for copy on write when flushing one of their own indirect
blocks. This eliminates a deadlock between the syncer daemon and a
process taking a snapshot.

Ensure that softdep_process_worklist() can never block because of a
snapshot being taken. This eliminates a problem with buffer starvation.

Cleanup change in ffs_sync() which did not synchronously wait when
MNT_WAIT was specified. The result was an unclean filesystem panic
when doing forcible unmount with heavy filesystem I/O in progress.

Return a zero'ed block when reading a block that was not in use at
the time that a snapshot was taken. Normally, these blocks should
never be read. However, the readahead code will occationally read
them which can cause unexpected behavior.

Clean up the debugging code that ensures that no blocks be written
on a filesystem while it is suspended. Snapshots must explicitly
label the blocks that they are writing during the suspension so that
they do not cause a `write on suspended filesystem' panic.

Reorganize ffs_copyonwrite() to eliminate a deadlock and also to
prevent a race condition that would permit the same block to be
copied twice. This change eliminates an unexpected soft updates
inconsistency in fsck caused by the double allocation.

Use bqrelse rather than brelse for buffers that will be needed
soon again by the snapshot code. This improves snapshot performance.
2000-07-24 05:28:33 +00:00
..
bus_if.m * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
device_if.m * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
genassym.sh Use "nm | awk ..." instead of genassym(1) to generate symbol value headers. 2000-06-02 09:27:48 +00:00
imgact_aout.c Remove ~25 unneeded #include <sys/conf.h> 2000-04-19 14:58:28 +00:00
imgact_elf.c Using an atomic operation here won't help if nobody else uses them (for 2000-07-23 22:19:49 +00:00
imgact_gzip.c useracc() the prequel: 1999-10-29 18:09:36 +00:00
imgact_shell.c Fix #! script exec under linux emulation. If a script is exec'd from a 2000-04-26 20:58:40 +00:00
inflate.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
init_main.c Remove no-longer-relevant comment. 2000-06-25 10:14:06 +00:00
init_sysent.c o Commit two of two, introducing __cap_{get,set}_{fd,file} syscalls to 2000-07-13 20:38:52 +00:00
kern_accf.c disallow unload until we do proper refcounting 2000-07-20 12:12:41 +00:00
kern_acct.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
kern_acl.c Remove unneeded #include <vm/vm_zone.h> 2000-04-30 18:52:11 +00:00
kern_cap.c o Introduce syscall prototypes, stubs for __cap_{get,set}_{fd,file}, 2000-07-13 20:31:24 +00:00
kern_clock.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_conf.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
kern_descrip.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_environment.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_event.c Fix a bug which would cause some knotes to get lost when two kqueues 2000-07-18 21:41:47 +00:00
kern_exec.c Support for unsigned integer and long sysctl variables. Update the 2000-07-05 07:46:41 +00:00
kern_exit.c fix races in the uidinfo subsystem, several problems existed: 2000-06-22 22:27:16 +00:00
kern_fork.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_intr.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_jail.c o Modify jail to limit creation of sockets to UNIX domain sockets, 2000-06-04 04:28:31 +00:00
kern_kthread.c Panic if proc0 hasn't been created and we try to call kthread_create. 2000-01-10 08:00:58 +00:00
kern_ktrace.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
kern_linker.c Correct SYSINIT execution order in the case when KLD contains more 2000-07-09 23:58:56 +00:00
kern_lock.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
kern_lockf.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
kern_malloc.c Move #ifdef to the right place. 2000-06-29 09:26:26 +00:00
kern_mib.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_module.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
kern_ntptime.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_physio.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
kern_proc.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_prot.c fix races in the uidinfo subsystem, several problems existed: 2000-06-22 22:27:16 +00:00
kern_resource.c fix a typo 2000-06-10 19:21:20 +00:00
kern_shutdown.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_sig.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
kern_subr.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
kern_switch.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_synch.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_syscalls.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_sysctl.c These patches implement dynamic sysctls. It's possible now to add 2000-07-15 10:26:04 +00:00
kern_tc.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
kern_threads.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
kern_time.c Remove unneeded <sys/buf.h> includes. 2000-04-18 15:15:39 +00:00
kern_timeout.c Restructure TCP timeout handling: 1999-08-30 21:17:07 +00:00
kern_xxx.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ksched.c Remove unneeded #include <sys/kernel.h> 2000-04-29 15:36:14 +00:00
link_aout.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
link_elf_obj.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
link_elf.c Move the truncation code out of vn_open and into the open system call 2000-07-04 03:34:11 +00:00
linker_if.m First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
Make.tags.inc Update tags directive to reflect the new location of soft updates 2000-07-04 00:18:43 +00:00
makedevops.pl Fix some bugs in user-end output and add a reference to the original 1999-11-22 14:40:04 +00:00
Makefile ${MACHINE} -> ${MACHINE_ARCH} 1999-11-14 13:54:44 +00:00
makeobjops.pl * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
makesyscalls.sh Fixed the calculation of sy_nargs in sysent tables. We attempted to do 2000-05-09 21:18:30 +00:00
md5c.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
p1003_1b.c Add $FreeBSD$ 2000-05-01 20:32:07 +00:00
posix4_mib.c Add $FreeBSD$. 2000-04-22 15:13:06 +00:00
subr_acl_posix1e.c Remove unneeded #include <vm/vm_zone.h> 2000-04-30 18:52:11 +00:00
subr_autoconf.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
subr_blist.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
subr_bus.c Patch up some bogons in the resource_find() vs resource_find_hard() 2000-07-18 06:08:27 +00:00
subr_clist.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
subr_devstat.c Support for unsigned integer and long sysctl variables. Update the 2000-07-05 07:46:41 +00:00
subr_disk.c End two weeks of on and off debugging. Fix the crash on the Nth 2000-07-05 06:01:33 +00:00
subr_disklabel.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
subr_diskmbr.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
subr_diskslice.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
subr_eventhandler.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
subr_kobj.c * Move the driver_t::refs field to kobj_t to replace kobj_t::instances. 2000-05-01 10:45:15 +00:00
subr_log.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
subr_module.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
subr_param.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
subr_prf.c Do not fault if curproc is null. 2000-04-29 11:32:15 +00:00
subr_prof.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
subr_rman.c Replace all the ifdef debugging spaghetti with a single ifdef and 2000-05-03 00:20:36 +00:00
subr_scanf.c Change the prototype of the strto* routines to make the second 1999-11-24 01:03:08 +00:00
subr_smp.c Further fixes for multiple-IO-APIC systems from Tor Egge: 2000-05-31 21:37:28 +00:00
subr_taskqueue.c Add taskqueue system for easy-to-use SWIs among other things. 2000-05-28 15:45:30 +00:00
subr_trap.c Change the way NMI's are handled. Before, if DDB was enabled and 2000-07-14 11:49:44 +00:00
subr_xxx.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
sys_generic.c For infinite timeouts, set both the tv_sec and tv_usec fields to zero in 2000-07-13 02:12:25 +00:00
sys_pipe.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
sys_process.c Introduce the new function 1999-11-21 19:03:20 +00:00
sys_socket.c Instead of just blindly setting -rw-rw-rw-: 2000-07-02 23:56:45 +00:00
syscalls.c o Commit two of two, introducing __cap_{get,set}_{fd,file} syscalls to 2000-07-13 20:38:52 +00:00
syscalls.master Simplify kqueue API slightly. 2000-07-18 19:31:52 +00:00
sysv_ipc.c Remove the undocumented, flawed, broken-as-designed semconfig() syscall. 2000-05-01 11:13:41 +00:00
sysv_msg.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
sysv_sem.c Move the MSG* and SEM* options to opt_sysvipc.h 2000-05-01 13:33:56 +00:00
sysv_shm.c This is a cleanup patch to Peter's new OBJT_PHYS VM object type 2000-05-29 22:40:54 +00:00
tty_compat.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_conf.c Don't refer to TABLDISC in the comments here. 2000-01-30 10:14:13 +00:00
tty_cons.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
tty_pty.c Unused include: #include "pty.h" 2000-06-10 07:12:40 +00:00
tty_snoop.c Unstaticize this driver. You can have as many snoop devices as you can 2000-04-02 00:35:37 +00:00
tty_subr.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_tty.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
tty.c Previous commit changing SYSCTL_HANDLER_ARGS violated KNF. 2000-07-04 11:25:35 +00:00
uipc_accf.c disallow unload until we do proper refcounting 2000-07-20 12:12:41 +00:00
uipc_domain.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
uipc_mbuf2.c remove m_pulldown statistics, which is highly experimental and does not 2000-07-12 16:39:13 +00:00
uipc_mbuf.c Make mbstat.m_mtypes seperate and viewable via sysctl, also 2000-07-15 06:02:48 +00:00
uipc_proto.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
uipc_sockbuf.c fix races in the uidinfo subsystem, several problems existed: 2000-06-22 22:27:16 +00:00
uipc_socket2.c fix races in the uidinfo subsystem, several problems existed: 2000-06-22 22:27:16 +00:00
uipc_socket.c only allow accept filter modifications on listening sockets 2000-07-20 12:17:17 +00:00
uipc_syscalls.c Modify ktrace's general I/O tracing, ktrgenio(), to use a struct uio * 2000-07-02 08:08:09 +00:00
uipc_usrreq.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
vfs_acl.c Remove unneeded #include <vm/vm_zone.h> 2000-04-30 18:52:11 +00:00
vfs_aio.c Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
vfs_bio.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
vfs_cache.c Support for unsigned integer and long sysctl variables. Update the 2000-07-05 07:46:41 +00:00
vfs_cluster.c Virtualizes & untangles the bioops operations vector. 2000-06-16 08:48:51 +00:00
vfs_conf.c Make a trip to Pointy-Hats-R-Us and actually include the header that 2000-05-22 17:25:47 +00:00
vfs_default.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
vfs_export.c This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
vfs_extattr.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
vfs_init.c The sysctl mod_xx hack is no longer required now that we have totally 1999-12-12 16:30:34 +00:00
vfs_lookup.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
vfs_mount.c Make a trip to Pointy-Hats-R-Us and actually include the header that 2000-05-22 17:25:47 +00:00
vfs_subr.c This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
vfs_syscalls.c Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00
vfs_vnops.c This patch corrects the first round of panics and hangs reported 2000-07-24 05:28:33 +00:00
vnode_if.pl remove crufty exec stuff, perl is in the base system 2000-06-27 19:09:55 +00:00
vnode_if.src Add snapshots to the fast filesystem. Most of the changes support 2000-07-11 22:07:57 +00:00