| # Copyright 2015 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| description "Schedule SSD trim" |
| author "chromium-os-dev@chromium.org" |
| |
| start on started system-services |
| |
| pre-start script |
| . /usr/share/cros/disk_utils.sh |
| . /usr/share/cros/trim_utils.sh |
| |
| mkdir -p "${CHROMEOS_TRIM_DIR}" |
| ts="$(cat "${CHROMEOS_TRIM_STATE}" 2> /dev/null || : )" |
| case "${ts}" in |
| "${TRIM_NOT_SUPPORTED}") |
| stop |
| ;; |
| "${TRIM_SUPPORTED}" | \ |
| "${TRIM_COMPLETED}" | \ |
| "${TRIM_FAILED}" | \ |
| "${TRIM_IN_PROGRESS}" ) |
| ;; |
| *) |
| ts="${TRIM_SUPPORTED}" |
| # Use a length larger than the discard granularity. |
| if ! fstrim --length 16K "${STATEFUL}" 2>/dev/null; then |
| ts="${TRIM_NOT_SUPPORTED}" |
| fi |
| echo "${ts}" > "${CHROMEOS_TRIM_STATE}" |
| if [ "${ts}" = "${TRIM_NOT_SUPPORTED}" ]; then |
| stop |
| fi |
| ;; |
| esac |
| end script |
| |
| exec periodic_scheduler 21600 3600 trim chromeos-trim |