1 // SPDX-License-Identifier: GPL-2.0-only
2 /******************************************************************************
3 *******************************************************************************
4 **
5 **  Copyright (C) 2005-2008 Red Hat, Inc.  All rights reserved.
6 **
7 **
8 *******************************************************************************
9 ******************************************************************************/
10 
11 #include "dlm_internal.h"
12 #include "rcom.h"
13 #include "util.h"
14 
15 #define DLM_ERRNO_EDEADLK		35
16 #define DLM_ERRNO_EBADR			53
17 #define DLM_ERRNO_EBADSLT		57
18 #define DLM_ERRNO_EPROTO		71
19 #define DLM_ERRNO_EOPNOTSUPP		95
20 #define DLM_ERRNO_ETIMEDOUT	       110
21 #define DLM_ERRNO_EINPROGRESS	       115
22 
23 /* higher errno values are inconsistent across architectures, so select
24    one set of values for on the wire */
25 
to_dlm_errno(int err)26 int to_dlm_errno(int err)
27 {
28 	switch (err) {
29 	case -EDEADLK:
30 		return -DLM_ERRNO_EDEADLK;
31 	case -EBADR:
32 		return -DLM_ERRNO_EBADR;
33 	case -EBADSLT:
34 		return -DLM_ERRNO_EBADSLT;
35 	case -EPROTO:
36 		return -DLM_ERRNO_EPROTO;
37 	case -EOPNOTSUPP:
38 		return -DLM_ERRNO_EOPNOTSUPP;
39 	case -ETIMEDOUT:
40 		return -DLM_ERRNO_ETIMEDOUT;
41 	case -EINPROGRESS:
42 		return -DLM_ERRNO_EINPROGRESS;
43 	}
44 	return err;
45 }
46 
from_dlm_errno(int err)47 int from_dlm_errno(int err)
48 {
49 	switch (err) {
50 	case -DLM_ERRNO_EDEADLK:
51 		return -EDEADLK;
52 	case -DLM_ERRNO_EBADR:
53 		return -EBADR;
54 	case -DLM_ERRNO_EBADSLT:
55 		return -EBADSLT;
56 	case -DLM_ERRNO_EPROTO:
57 		return -EPROTO;
58 	case -DLM_ERRNO_EOPNOTSUPP:
59 		return -EOPNOTSUPP;
60 	case -DLM_ERRNO_ETIMEDOUT:
61 		return -ETIMEDOUT;
62 	case -DLM_ERRNO_EINPROGRESS:
63 		return -EINPROGRESS;
64 	}
65 	return err;
66 }
67