int toErrno()

in src/common/utils/StatusCode.cc [39:106]


int toErrno(status_code_t code) {
  //  XLOGF(DBG, "error code to convert {}", code);

  if (StatusCode::typeOf(code) == StatusCodeType::RPC) {
    return EREMOTEIO;
  }

  switch (code) {
    case ClientAgentCode::kTooManyOpenFiles:
      return EMFILE;

    case StatusCode::kInvalidArg:
      return EINVAL;
    case StatusCode::kNotImplemented:
      return ENOSYS;
    case StatusCode::kNotEnoughMemory:
      return ENOMEM;
    case StatusCode::kAuthenticationFail:
      return EPERM;
    case StatusCode::kReadOnlyMode:
      return EROFS;
    case MetaCode::kRequestCanceled:
    case StorageClientCode::kRequestCanceled:
      // NOTE: use EINTR instead of ECANCELED
      return EINTR;
    case StorageClientCode::kNoSpace:
      return ENOSPC;

    case MetaCode::kNotFound:
      return ENOENT;
    case MetaCode::kNotEmpty:
      return ENOTEMPTY;
    case MetaCode::kNotDirectory:
      return ENOTDIR;
    case MetaCode::kTooManySymlinks:
      return ELOOP;
    case MetaCode::kIsDirectory:
      return EISDIR;
    case MetaCode::kExists:
      return EEXIST;
    case MetaCode::kNoPermission:
      return EPERM;
    case MetaCode::kInconsistent:
      return EIO;
    case MetaCode::kNotFile:
      return EBADF;
    case MetaCode::kMoreChunksToRemove:
      return EAGAIN;
    case MetaCode::kNameTooLong:
      return ENAMETOOLONG;
    case MetaCode::kNoLock:
      return ENOLCK;
    case MetaCode::kFileTooLarge:
      return EFBIG;

    case ClientAgentCode::kHoleInIoOutcome:
      return ENODATA;
    case ClientAgentCode::kOperationDisabled:
      return EOPNOTSUPP;
    case ClientAgentCode::kIovNotRegistered:
      return EACCES;
    case ClientAgentCode::kIovShmFail:
      return EACCES;

    default:
      return EIO;
  }
}