]>
Commit | Line | Data |
---|---|---|
0c2eb3f5 AZ |
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 | ||
5cdca5b1 | 10 | if [ $# -eq 0 ]; then |
0c2eb3f5 AZ |
11 | echo "Usage: $0 [options] dataset…" >&2 |
12 | exit 16 | |
13 | fi | |
14 | ||
15 | ret=0 | |
5cdca5b1 | 16 | for dataset; do |
0c2eb3f5 AZ |
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) | |
6fc30992 | 29 | ret=$(( ret | 4 )) |
0c2eb3f5 AZ |
30 | ;; |
31 | FAULTED) | |
32 | awk '!/^([[:space:]]*#.*)?$/ && $1 == "'"$dataset"'" && $3 == "zfs" {exit 1}' /etc/fstab || \ | |
6fc30992 | 33 | ret=$(( ret | 8 )) |
0c2eb3f5 AZ |
34 | ;; |
35 | "") | |
36 | # Pool not found, error printed by zpool(8) | |
6fc30992 | 37 | ret=$(( ret | 8 )) |
0c2eb3f5 AZ |
38 | ;; |
39 | *) | |
40 | ;; | |
41 | esac | |
42 | done | |
43 | ||
44 | exit "$ret" |