]> git.proxmox.com Git - mirror_zfs.git/blame - cmd/fsck.zfs.in
Revert "Reduce dbuf_find() lock contention"
[mirror_zfs.git] / cmd / fsck.zfs.in
CommitLineData
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 10if [ $# -eq 0 ]; then
0c2eb3f5
AZ
11 echo "Usage: $0 [options] dataset…" >&2
12 exit 16
13fi
14
15ret=0
5cdca5b1 16for 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
42done
43
44exit "$ret"