| #!/bin/sh |
| # Copyright 2015 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| STATEFUL="/mnt/stateful_partition" |
| |
| get_stateful_df_data() { |
| local bs="${1:-1K}" |
| df --block-size "${bs}" -P "${STATEFUL}" | grep -m 1 "${STATEFUL}" |
| } |
| |
| # Get the lifetime writes from the stateful partition. |
| get_stateful_lifetime_writes() { |
| local stateful_dev |
| stateful_dev="$(rootdev '/mnt/stateful_partition' | sed -e 's#^/dev/##')" |
| local lifetime_writes |
| lifetime_writes="$(cat "/sys/fs/ext4/${stateful_dev}/lifetime_write_kbytes")" |
| : "${lifetime_writes:=0}" |
| echo "${lifetime_writes}" |
| } |
| |
| # Get the percentage of space used on the stateful partition. |
| get_stateful_usage_percent() { |
| local total free used |
| total=$(get_stateful_total_space_blocks) |
| free=$(get_stateful_free_space_blocks "${bs}") |
| used=$(( total - free )) |
| echo $(( used * 100 / total )) |
| } |
| |
| # Get the free space on the stateful partition. |
| # |
| # inputs: |
| # bs -- size of block as understood by strosize (suffixes allowed) |
| get_stateful_free_space_blocks() { |
| local bs bs_bytes size |
| bs="${1:-1K}" |
| bs_bytes=$(numfmt --from=iec "${bs}") |
| size=$(spaced_cli --get_free_disk_space="${STATEFUL}") |
| echo $(( size / bs_bytes )) |
| } |
| |
| # Get the total space on the stateful partition. |
| # |
| # inputs: |
| # bs -- size of block as understood by strosize (suffixes allowed) |
| get_stateful_total_space_blocks() { |
| local bs bs_bytes size |
| bs="${1:-1K}" |
| bs_bytes=$(numfmt --from=iec "${bs}") |
| size=$(spaced_cli --get_total_disk_space="${STATEFUL}") |
| echo $(( size / bs_bytes )) |
| } |
| |
| # Get the used space on the stateful partition. |
| # |
| # inputs: |
| # bs -- size of block as understood by strosize (suffixes allowed) |
| get_stateful_used_space_blocks() { |
| local bs total free |
| bs="${1:-1K}" |
| total=$(get_stateful_total_space_blocks "${bs}") |
| free=$(get_stateful_free_space_blocks "${bs}") |
| echo $(( total - free )) |
| } |
| |
| # Gets enum for stateful partition's format. |
| # |
| # Output denotes the following formats: |
| # 0 - Raw partition |
| # 1 - Logical volume (LVM) |
| get_stateful_format_enum() { |
| local stateful_dev |
| stateful_dev="$(rootdev '/mnt/stateful_partition')" |
| |
| case "${stateful_dev}" in |
| /dev/dm*) printf 1 ;; |
| *) printf 0 ;; |
| esac |
| } |