in internal/fs/wrappers/monitoring.go [53:225]
func categorize(err error) string {
if err == nil {
return ""
}
var errno syscall.Errno
if !errors.As(err, &errno) {
errno = DefaultFSError
}
switch errno {
case syscall.ELNRNG,
syscall.ENODEV,
syscall.ENONET,
syscall.ENOSTR,
syscall.ENOTSOCK,
syscall.ENXIO,
syscall.EPROTO,
syscall.ERFKILL,
syscall.EXDEV:
return errDevice
case syscall.ENOTEMPTY:
return errDirNotEmpty
case syscall.EEXIST:
return errFileExists
case syscall.EBADF,
syscall.EBADFD,
syscall.EFBIG,
syscall.EISDIR,
syscall.EISNAM,
syscall.ENOTBLK:
return errFileDir
case syscall.ENOSYS:
return errNotImplemented
case syscall.EIO:
return errIO
case syscall.ECANCELED,
syscall.EINTR:
return errInterrupt
case syscall.EINVAL:
return errInvalidArg
case syscall.E2BIG,
syscall.EALREADY,
syscall.EBADE,
syscall.EBADR,
syscall.EDOM,
syscall.EINPROGRESS,
syscall.ENOEXEC,
syscall.ENOTSUP,
syscall.ENOTTY,
syscall.ERANGE,
syscall.ESPIPE:
return errInvalidOp
case syscall.EADV,
syscall.EBADSLT,
syscall.EBFONT,
syscall.ECHRNG,
syscall.EDOTDOT,
syscall.EIDRM,
syscall.EILSEQ,
syscall.ELIBACC,
syscall.ELIBBAD,
syscall.ELIBEXEC,
syscall.ELIBMAX,
syscall.ELIBSCN,
syscall.EMEDIUMTYPE,
syscall.ENAVAIL,
syscall.ENOANO,
syscall.ENOCSI,
syscall.ENODATA,
syscall.ENOMEDIUM,
syscall.ENOMSG,
syscall.ENOPKG,
syscall.ENOSR,
syscall.ENOTNAM,
syscall.ENOTRECOVERABLE,
syscall.EOVERFLOW,
syscall.ERESTART,
syscall.ESRMNT,
syscall.ESTALE,
syscall.ETIME,
syscall.ETOOMANYREFS,
syscall.EUCLEAN,
syscall.EUNATCH,
syscall.EXFULL:
return errMisc
case syscall.EADDRINUSE,
syscall.EADDRNOTAVAIL,
syscall.EAFNOSUPPORT,
syscall.EBADMSG,
syscall.EBADRQC,
syscall.ECOMM,
syscall.ECONNABORTED,
syscall.ECONNREFUSED,
syscall.ECONNRESET,
syscall.EDESTADDRREQ,
syscall.EFAULT,
syscall.EHOSTDOWN,
syscall.EHOSTUNREACH,
syscall.EISCONN,
syscall.EL2HLT,
syscall.EL2NSYNC,
syscall.EL3HLT,
syscall.EL3RST,
syscall.EMSGSIZE,
syscall.EMULTIHOP,
syscall.ENETDOWN,
syscall.ENETRESET,
syscall.ENETUNREACH,
syscall.ENOLINK,
syscall.ENOPROTOOPT,
syscall.ENOTCONN,
syscall.ENOTUNIQ,
syscall.EPFNOSUPPORT,
syscall.EPIPE,
syscall.EPROTONOSUPPORT,
syscall.EPROTOTYPE,
syscall.EREMCHG,
syscall.EREMOTE,
syscall.EREMOTEIO,
syscall.ESHUTDOWN,
syscall.ESOCKTNOSUPPORT,
syscall.ESTRPIPE,
syscall.ETIMEDOUT:
return errNetwork
case syscall.ENOENT:
return errNoFileOrDir
case syscall.ENOTDIR:
return errNotADir
case syscall.EACCES,
syscall.EKEYEXPIRED,
syscall.EKEYREJECTED,
syscall.EKEYREVOKED,
syscall.ENOKEY,
syscall.EPERM,
syscall.EROFS,
syscall.ETXTBSY:
return errPerm
case syscall.EAGAIN,
syscall.EBUSY,
syscall.ECHILD,
syscall.EDEADLK,
syscall.EDQUOT,
syscall.ELOOP,
syscall.EMLINK,
syscall.ENAMETOOLONG,
syscall.ENOBUFS,
syscall.ENOLCK,
syscall.ENOMEM,
syscall.ENOSPC,
syscall.EOWNERDEAD,
syscall.ESRCH,
syscall.EUSERS:
return errProcessMgmt
case syscall.EMFILE,
syscall.ENFILE:
return errTooManyFiles
}
return errMisc
}