mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	fsck.zfs: implement 4/8 exit codes as suggested in manpage
Update the fsck.zfs helper to bubble up some already-known-about errors if they are detected in the pool. health=degraded => 4/"Filesystem errors left uncorrected" health=faulted && dataset in /etc/fstab => 8/"Operational error" pool not found => 8/"Operational error" everything else => 0 Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Closes #11806
This commit is contained in:
		
							parent
							
								
									bfdd001679
								
							
						
					
					
						commit
						dc52c0d725
					
				
							
								
								
									
										1
									
								
								cmd/fsck_zfs/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cmd/fsck_zfs/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | /fsck.zfs | ||||||
| @ -1 +1,5 @@ | |||||||
|  | include $(top_srcdir)/config/Substfiles.am | ||||||
|  | 
 | ||||||
| dist_sbin_SCRIPTS = fsck.zfs | dist_sbin_SCRIPTS = fsck.zfs | ||||||
|  | 
 | ||||||
|  | SUBSTFILES += $(dist_sbin_SCRIPTS) | ||||||
|  | |||||||
| @ -1,9 +0,0 @@ | |||||||
| #!/bin/sh |  | ||||||
| # |  | ||||||
| # fsck.zfs: A fsck helper to accommodate distributions that expect |  | ||||||
| # to be able to execute a fsck on all filesystem types.  Currently |  | ||||||
| # this script does nothing but it could be extended to act as a |  | ||||||
| # compatibility wrapper for 'zpool scrub'. |  | ||||||
| # |  | ||||||
| 
 |  | ||||||
| exit 0 |  | ||||||
							
								
								
									
										44
									
								
								cmd/fsck_zfs/fsck.zfs.in
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								cmd/fsck_zfs/fsck.zfs.in
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # fsck.zfs: A fsck helper to accommodate distributions that expect | ||||||
|  | # to be able to execute a fsck on all filesystem types. | ||||||
|  | # | ||||||
|  | # This script simply bubbles up some already-known-about errors, | ||||||
|  | # see fsck.zfs(8) | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | if [ "$#" = "0" ]; then | ||||||
|  | 	echo "Usage: $0 [options] dataset…" >&2 | ||||||
|  | 	exit 16 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | ret=0 | ||||||
|  | for dataset in "$@"; do | ||||||
|  | 	case "$dataset" in | ||||||
|  | 		-*) | ||||||
|  | 			continue | ||||||
|  | 			;; | ||||||
|  | 		*) | ||||||
|  | 			;; | ||||||
|  | 	esac | ||||||
|  | 
 | ||||||
|  | 	pool="${dataset%%/*}" | ||||||
|  | 
 | ||||||
|  | 	case "$(@sbindir@/zpool list -Ho health "$pool")" in | ||||||
|  | 		DEGRADED) | ||||||
|  | 			ret=$(( $ret | 4 )) | ||||||
|  | 			;; | ||||||
|  | 		FAULTED) | ||||||
|  | 			awk '!/^([[:space:]]*#.*)?$/ && $1 == "'"$dataset"'" && $3 == "zfs" {exit 1}' /etc/fstab || \ | ||||||
|  | 				ret=$(( $ret | 8 )) | ||||||
|  | 			;; | ||||||
|  | 		"") | ||||||
|  | 			# Pool not found, error printed by zpool(8) | ||||||
|  | 			ret=$(( $ret | 8 )) | ||||||
|  | 			;; | ||||||
|  | 		*) | ||||||
|  | 			;; | ||||||
|  | 	esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | exit "$ret" | ||||||
| @ -22,24 +22,27 @@ | |||||||
| .\" | .\" | ||||||
| .\" Copyright 2013 Darik Horn <dajhorn@vanadac.com>. All rights reserved. | .\" Copyright 2013 Darik Horn <dajhorn@vanadac.com>. All rights reserved. | ||||||
| .\" | .\" | ||||||
| .TH FSCK.ZFS 8 "Aug 24, 2020" OpenZFS | .TH FSCK.ZFS 8 "Mar 27, 2021" OpenZFS | ||||||
| 
 | 
 | ||||||
| .SH NAME | .SH NAME | ||||||
| fsck.zfs \- Dummy ZFS filesystem checker. | fsck.zfs \- Dummy ZFS filesystem checker. | ||||||
| 
 | 
 | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .LP | .LP | ||||||
| .BI "fsck.zfs [" "options" "] <" "dataset" ">" | .BI "fsck.zfs [" "options" "] <" "dataset" ">…" | ||||||
| 
 | 
 | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| .LP | .LP | ||||||
| \fBfsck.zfs\fR is a shell stub that does nothing and always returns | \fBfsck.zfs\fR is a thin shell wrapper that at most checks the status of a | ||||||
| true. It is installed by ZoL because some Linux distributions expect | dataset's container pool. It is installed by OpenZFS because some Linux | ||||||
| a fsck helper for all filesystems. | distributions expect a fsck helper for all filesystems. | ||||||
|  | .LP | ||||||
|  | If more than one \fIdataset\fR is specified, each is checked in turn | ||||||
|  | and results binary ored. | ||||||
| 
 | 
 | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| .HP | .HP | ||||||
| All \fIoptions\fR and the \fIdataset\fR are ignored. | All \fIoptions\fR are ignored. | ||||||
| 
 | 
 | ||||||
| .SH "NOTES" | .SH "NOTES" | ||||||
| .LP | .LP | ||||||
| @ -47,14 +50,15 @@ ZFS datasets are checked by running \fBzpool scrub\fR on the | |||||||
| containing pool. An individual ZFS dataset is never checked | containing pool. An individual ZFS dataset is never checked | ||||||
| independently of its pool, which is unlike a regular filesystem. | independently of its pool, which is unlike a regular filesystem. | ||||||
| 
 | 
 | ||||||
| .SH "BUGS" |  | ||||||
| .LP | .LP | ||||||
| On some systems, if the \fIdataset\fR is in a degraded pool, then it | However, the | ||||||
| might be appropriate for \fBfsck.zfs\fR to return exit code 4 to | .BR fsck (8) | ||||||
| indicate an uncorrected filesystem error. | interface still allows it to communicate some errors: | ||||||
|  | if the \fIdataset\fR is in a degraded pool, then \fBfsck.zfs\fR will | ||||||
|  | return exit code 4 to indicate an uncorrected filesystem error. | ||||||
| .LP | .LP | ||||||
| Similarly, if the \fIdataset\fR is in a faulted pool and has a legacy | Similarly, if the \fIdataset\fR is in a faulted pool and has a legacy | ||||||
| /etc/fstab record, then \fBfsck.zfs\fR should return exit code 8 to | /etc/fstab record, then \fBfsck.zfs\fR will return exit code 8 to | ||||||
| indicate a fatal operational error. | indicate a fatal operational error. | ||||||
| 
 | 
 | ||||||
| .SH "AUTHORS" | .SH "AUTHORS" | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 наб
						наб