162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/******************************************************************************
362306a36Sopenharmony_ci*******************************************************************************
462306a36Sopenharmony_ci**
562306a36Sopenharmony_ci**  Copyright (C) 2005-2008 Red Hat, Inc.  All rights reserved.
662306a36Sopenharmony_ci**
762306a36Sopenharmony_ci**
862306a36Sopenharmony_ci*******************************************************************************
962306a36Sopenharmony_ci******************************************************************************/
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include "dlm_internal.h"
1262306a36Sopenharmony_ci#include "rcom.h"
1362306a36Sopenharmony_ci#include "util.h"
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#define DLM_ERRNO_EDEADLK		35
1662306a36Sopenharmony_ci#define DLM_ERRNO_EBADR			53
1762306a36Sopenharmony_ci#define DLM_ERRNO_EBADSLT		57
1862306a36Sopenharmony_ci#define DLM_ERRNO_EPROTO		71
1962306a36Sopenharmony_ci#define DLM_ERRNO_EOPNOTSUPP		95
2062306a36Sopenharmony_ci#define DLM_ERRNO_ETIMEDOUT	       110
2162306a36Sopenharmony_ci#define DLM_ERRNO_EINPROGRESS	       115
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci/* higher errno values are inconsistent across architectures, so select
2462306a36Sopenharmony_ci   one set of values for on the wire */
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ciint to_dlm_errno(int err)
2762306a36Sopenharmony_ci{
2862306a36Sopenharmony_ci	switch (err) {
2962306a36Sopenharmony_ci	case -EDEADLK:
3062306a36Sopenharmony_ci		return -DLM_ERRNO_EDEADLK;
3162306a36Sopenharmony_ci	case -EBADR:
3262306a36Sopenharmony_ci		return -DLM_ERRNO_EBADR;
3362306a36Sopenharmony_ci	case -EBADSLT:
3462306a36Sopenharmony_ci		return -DLM_ERRNO_EBADSLT;
3562306a36Sopenharmony_ci	case -EPROTO:
3662306a36Sopenharmony_ci		return -DLM_ERRNO_EPROTO;
3762306a36Sopenharmony_ci	case -EOPNOTSUPP:
3862306a36Sopenharmony_ci		return -DLM_ERRNO_EOPNOTSUPP;
3962306a36Sopenharmony_ci	case -ETIMEDOUT:
4062306a36Sopenharmony_ci		return -DLM_ERRNO_ETIMEDOUT;
4162306a36Sopenharmony_ci	case -EINPROGRESS:
4262306a36Sopenharmony_ci		return -DLM_ERRNO_EINPROGRESS;
4362306a36Sopenharmony_ci	}
4462306a36Sopenharmony_ci	return err;
4562306a36Sopenharmony_ci}
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciint from_dlm_errno(int err)
4862306a36Sopenharmony_ci{
4962306a36Sopenharmony_ci	switch (err) {
5062306a36Sopenharmony_ci	case -DLM_ERRNO_EDEADLK:
5162306a36Sopenharmony_ci		return -EDEADLK;
5262306a36Sopenharmony_ci	case -DLM_ERRNO_EBADR:
5362306a36Sopenharmony_ci		return -EBADR;
5462306a36Sopenharmony_ci	case -DLM_ERRNO_EBADSLT:
5562306a36Sopenharmony_ci		return -EBADSLT;
5662306a36Sopenharmony_ci	case -DLM_ERRNO_EPROTO:
5762306a36Sopenharmony_ci		return -EPROTO;
5862306a36Sopenharmony_ci	case -DLM_ERRNO_EOPNOTSUPP:
5962306a36Sopenharmony_ci		return -EOPNOTSUPP;
6062306a36Sopenharmony_ci	case -DLM_ERRNO_ETIMEDOUT:
6162306a36Sopenharmony_ci		return -ETIMEDOUT;
6262306a36Sopenharmony_ci	case -DLM_ERRNO_EINPROGRESS:
6362306a36Sopenharmony_ci		return -EINPROGRESS;
6462306a36Sopenharmony_ci	}
6562306a36Sopenharmony_ci	return err;
6662306a36Sopenharmony_ci}
67