| #!/bin/sh |
| # |
| # fsck.zfs: A fsck helper to accommodate distributions that expect |
| # to be able to execute a fsck on all filesystem types. |
| # |
| # This script simply bubbles up some already-known-about errors, |
| # see fsck.zfs(8) |
| # |
| |
| if [ "$#" = "0" ]; then |
| echo "Usage: $0 [options] dataset…" >&2 |
| exit 16 |
| fi |
| |
| ret=0 |
| for dataset in "$@"; do |
| case "$dataset" in |
| -*) |
| continue |
| ;; |
| *) |
| ;; |
| esac |
| |
| pool="${dataset%%/*}" |
| |
| case "$(@sbindir@/zpool list -Ho health "$pool")" in |
| DEGRADED) |
| ret=$(( ret | 4 )) |
| ;; |
| FAULTED) |
| awk '!/^([[:space:]]*#.*)?$/ && $1 == "'"$dataset"'" && $3 == "zfs" {exit 1}' /etc/fstab || \ |
| ret=$(( ret | 8 )) |
| ;; |
| "") |
| # Pool not found, error printed by zpool(8) |
| ret=$(( ret | 8 )) |
| ;; |
| *) |
| ;; |
| esac |
| done |
| |
| exit "$ret" |