1#!/bin/sh 2# 3# fsck.zfs: A fsck helper to accommodate distributions that expect 4# to be able to execute a fsck on all filesystem types. 5# 6# This script simply bubbles up some already-known-about errors, 7# see fsck.zfs(8) 8# 9 10if [ $# -eq 0 ]; then 11 echo "Usage: $0 [options] dataset…" >&2 12 exit 16 13fi 14 15ret=0 16for dataset; do 17 case "$dataset" in 18 -*) 19 continue 20 ;; 21 *) 22 ;; 23 esac 24 25 pool="${dataset%%/*}" 26 27 case "$(@sbindir@/zpool list -Ho health "$pool")" in 28 DEGRADED) 29 ret=$(( ret | 4 )) 30 ;; 31 FAULTED) 32 awk '!/^([[:space:]]*#.*)?$/ && $1 == "'"$dataset"'" && $3 == "zfs" {exit 1}' /etc/fstab || \ 33 ret=$(( ret | 8 )) 34 ;; 35 "") 36 # Pool not found, error printed by zpool(8) 37 ret=$(( ret | 8 )) 38 ;; 39 *) 40 ;; 41 esac 42done 43 44exit "$ret" 45