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