summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs/ffs_extern.h
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2002-01-22 06:17:22 +0000
committermckusick <mckusick@FreeBSD.org>2002-01-22 06:17:22 +0000
commit4f050b1765cbe6b5989b5ccee6a3d46a479bfd1a (patch)
tree977b2b5cd36d61bc3124ea18d905cfc36e0f690d /sys/ufs/ffs/ffs_extern.h
parented13300966ae65f0dbd7f5e77b4883370c8a415d (diff)
downloadFreeBSD-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.h1
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));
OpenPOWER on IntegriCloud