summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/defaults/rc.conf1
-rw-r--r--etc/rc10
-rw-r--r--etc/rc.d/bgfsck15
-rw-r--r--share/man/man5/rc.conf.55
4 files changed, 27 insertions, 4 deletions
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf
index 954bfa8..791d2cd 100644
--- a/etc/defaults/rc.conf
+++ b/etc/defaults/rc.conf
@@ -40,6 +40,7 @@ script_name_sep=" " # Change if your startup scripts' names contain spaces
rc_conf_files="/etc/rc.conf /etc/rc.conf.local"
fsck_y_enable="NO" # Set to YES to do fsck -y if the initial preen fails.
background_fsck="YES" # Attempt to run fsck in the background where possible.
+background_fsck_delay="60" # Time to wait (seconds) before starting the fsck.
extra_netfs_types="NO" # List of network extra filesystem types for delayed
# mount at startup (or NO).
diff --git a/etc/rc b/etc/rc
index 20a8414..636fdbc 100644
--- a/etc/rc
+++ b/etc/rc
@@ -982,8 +982,14 @@ esac
# Start background fsck checks if necessary
case ${background_fsck} in
[Yy][Ee][Ss])
- echo 'Starting background filesystem checks'
- nice -4 fsck -B -p 2>&1 | logger -p daemon.notice &
+ bgfsck_msg='Starting background file system checks'
+ if [ ${background_fsck_delay:=0} -gt 0 ]; then
+ bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds"
+ fi
+ echo "${bgfsck_msg}."
+
+ (sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \
+ logger -p daemon.notice &
;;
esac
diff --git a/etc/rc.d/bgfsck b/etc/rc.d/bgfsck
index f032473..86c26d3 100644
--- a/etc/rc.d/bgfsck
+++ b/etc/rc.d/bgfsck
@@ -11,9 +11,20 @@
name="background-fsck"
rcvar="background_fsck"
-start_precmd="echo 'Starting background file system checks.'"
-start_cmd="nice -4 fsck -B -p 2>&1 | logger -p daemon.notice &"
+start_cmd="bgfsck_start"
stop_cmd=":"
+bgfsck_start ()
+{
+ bgfsck_msg='Starting background file system checks'
+ if [ ${background_fsck_delay:=0} -gt 0 ]; then
+ bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds"
+ fi
+ echo "${bgfsck_msg}."
+
+ (sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \
+ logger -p daemon.notice &
+}
+
load_rc_config $name
run_rc_command "$1"
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index fb758f9..a49f9d9 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -734,6 +734,11 @@ If set to
the system will attempt to run
.Xr fsck 8
in the background where possible.
+.It Va background_fsck_delay
+.Pq Vt int
+The amount of time in seconds to sleep before starting a background fsck.
+It defaults to sixty seconds to allow large applications such as
+the X server to start before disk I/O bandwidth is monopolized by fsck.
.It Va extra_netfs_types
.Pq Vt str
If set to something other than
OpenPOWER on IntegriCloud