Map ECKSUM and EFRAGS from ZFS onto real errnos.

Make it less confusing when, for example, stat sets errno to 122 because a
checksum failed in ZFS:

Before: getfacl: /foo/bar: stat() failed: Unknown error: 122
After: getfacl: /foo/bar: stat() failed: Integrity check failed

Submitted by:	Ryan Moeller <ryan@ixsystems.com>
Reviewed by:	mckusick, mav
MFC after:	2 weeks
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D22973
This commit is contained in:
mav 2020-01-13 22:06:16 +00:00
parent b6a39983f4
commit d516c76636

View File

@ -233,12 +233,11 @@ enum zio_wait_type {
};
/*
* We'll take the number 122 and 123 to indicate checksum errors and
* fragmentation. Those doesn't collide with any errno values as they
* are greater than ELAST.
* These are bespoke errnos used in ZFS. We map them to their closest FreeBSD
* equivalents. This gives us more useful error messages from strerror(3).
*/
#define ECKSUM 122
#define EFRAGS 123
#define ECKSUM EINTEGRITY
#define EFRAGS ENOSPC
typedef void zio_done_func_t(zio_t *zio);