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