diff options
author | mckusick <mckusick@FreeBSD.org> | 2002-01-22 06:17:22 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 2002-01-22 06:17:22 +0000 |
commit | 4f050b1765cbe6b5989b5ccee6a3d46a479bfd1a (patch) | |
tree | 977b2b5cd36d61bc3124ea18d905cfc36e0f690d /sys/ufs/ffs/ffs_extern.h | |
parent | ed13300966ae65f0dbd7f5e77b4883370c8a415d (diff) | |
download | FreeBSD-src-4f050b1765cbe6b5989b5ccee6a3d46a479bfd1a.zip FreeBSD-src-4f050b1765cbe6b5989b5ccee6a3d46a479bfd1a.tar.gz |
This patch fixes a long standing complaint with soft updates in
which small and/or nearly full filesystems would fail with `file
system full' messages when trying to replace a number of existing
files (for example during a system installation). When the allocation
routines are about to fail with a file system full condition, they
make a call to softdep_request_cleanup() which attempts to accelerate
the flushing of pending deletion requests in an effort to free up
space. In the face of filesystem I/O requests that exceed the
available disk transfer capacity, the cleanup request could take
an unbounded amount of time. Thus, the softdep_request_cleanup()
routine will only try for tickdelay seconds (default 2 seconds)
before giving up and returning a filesystem full error. Under typical
conditions, the softdep_request_cleanup() routine is able to free
up space in under fifty milliseconds.
Diffstat (limited to 'sys/ufs/ffs/ffs_extern.h')
-rw-r--r-- | sys/ufs/ffs/ffs_extern.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_extern.h b/sys/ufs/ffs/ffs_extern.h index 49f0279..b70f7f7 100644 --- a/sys/ufs/ffs/ffs_extern.h +++ b/sys/ufs/ffs/ffs_extern.h @@ -109,6 +109,7 @@ int softdep_flushfiles __P((struct mount *, int, struct thread *)); void softdep_update_inodeblock __P((struct inode *, struct buf *, int)); void softdep_load_inodeblock __P((struct inode *)); void softdep_freefile __P((struct vnode *, ino_t, int)); +int softdep_request_cleanup __P((struct fs *, struct vnode *)); void softdep_setup_freeblocks __P((struct inode *, off_t)); void softdep_setup_inomapdep __P((struct buf *, struct inode *, ino_t)); void softdep_setup_blkmapdep __P((struct buf *, struct fs *, ufs_daddr_t)); |