Blame view

fs/dlm/util.c 4.5 KB
e7fd41792   David Teigland   [DLM] The core of...
1
2
3
  /******************************************************************************
  *******************************************************************************
  **
dbcfc3473   David Teigland   dlm: clean ups
4
  **  Copyright (C) 2005-2008 Red Hat, Inc.  All rights reserved.
e7fd41792   David Teigland   [DLM] The core of...
5
6
7
8
9
10
11
12
13
14
15
  **
  **  This copyrighted material is made available to anyone wishing to use,
  **  modify, copy, or redistribute it subject to the terms and conditions
  **  of the GNU General Public License v.2.
  **
  *******************************************************************************
  ******************************************************************************/
  
  #include "dlm_internal.h"
  #include "rcom.h"
  #include "util.h"
861e2369e   David Teigland   dlm: use fixed er...
16
17
18
19
20
21
22
  #define DLM_ERRNO_EDEADLK		35
  #define DLM_ERRNO_EBADR			53
  #define DLM_ERRNO_EBADSLT		57
  #define DLM_ERRNO_EPROTO		71
  #define DLM_ERRNO_EOPNOTSUPP		95
  #define DLM_ERRNO_ETIMEDOUT	       110
  #define DLM_ERRNO_EINPROGRESS	       115
e7fd41792   David Teigland   [DLM] The core of...
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  static void header_out(struct dlm_header *hd)
  {
  	hd->h_version		= cpu_to_le32(hd->h_version);
  	hd->h_lockspace		= cpu_to_le32(hd->h_lockspace);
  	hd->h_nodeid		= cpu_to_le32(hd->h_nodeid);
  	hd->h_length		= cpu_to_le16(hd->h_length);
  }
  
  static void header_in(struct dlm_header *hd)
  {
  	hd->h_version		= le32_to_cpu(hd->h_version);
  	hd->h_lockspace		= le32_to_cpu(hd->h_lockspace);
  	hd->h_nodeid		= le32_to_cpu(hd->h_nodeid);
  	hd->h_length		= le16_to_cpu(hd->h_length);
  }
861e2369e   David Teigland   dlm: use fixed er...
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  /* higher errno values are inconsistent across architectures, so select
     one set of values for on the wire */
  
  static int to_dlm_errno(int err)
  {
  	switch (err) {
  	case -EDEADLK:
  		return -DLM_ERRNO_EDEADLK;
  	case -EBADR:
  		return -DLM_ERRNO_EBADR;
  	case -EBADSLT:
  		return -DLM_ERRNO_EBADSLT;
  	case -EPROTO:
  		return -DLM_ERRNO_EPROTO;
  	case -EOPNOTSUPP:
  		return -DLM_ERRNO_EOPNOTSUPP;
  	case -ETIMEDOUT:
  		return -DLM_ERRNO_ETIMEDOUT;
  	case -EINPROGRESS:
  		return -DLM_ERRNO_EINPROGRESS;
  	}
  	return err;
  }
  
  static int from_dlm_errno(int err)
  {
  	switch (err) {
  	case -DLM_ERRNO_EDEADLK:
  		return -EDEADLK;
  	case -DLM_ERRNO_EBADR:
  		return -EBADR;
  	case -DLM_ERRNO_EBADSLT:
  		return -EBADSLT;
  	case -DLM_ERRNO_EPROTO:
  		return -EPROTO;
  	case -DLM_ERRNO_EOPNOTSUPP:
  		return -EOPNOTSUPP;
  	case -DLM_ERRNO_ETIMEDOUT:
  		return -ETIMEDOUT;
  	case -DLM_ERRNO_EINPROGRESS:
  		return -EINPROGRESS;
  	}
  	return err;
  }
e7fd41792   David Teigland   [DLM] The core of...
82
83
  void dlm_message_out(struct dlm_message *ms)
  {
dbcfc3473   David Teigland   dlm: clean ups
84
  	header_out(&ms->m_header);
e7fd41792   David Teigland   [DLM] The core of...
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  
  	ms->m_type		= cpu_to_le32(ms->m_type);
  	ms->m_nodeid		= cpu_to_le32(ms->m_nodeid);
  	ms->m_pid		= cpu_to_le32(ms->m_pid);
  	ms->m_lkid		= cpu_to_le32(ms->m_lkid);
  	ms->m_remid		= cpu_to_le32(ms->m_remid);
  	ms->m_parent_lkid	= cpu_to_le32(ms->m_parent_lkid);
  	ms->m_parent_remid	= cpu_to_le32(ms->m_parent_remid);
  	ms->m_exflags		= cpu_to_le32(ms->m_exflags);
  	ms->m_sbflags		= cpu_to_le32(ms->m_sbflags);
  	ms->m_flags		= cpu_to_le32(ms->m_flags);
  	ms->m_lvbseq		= cpu_to_le32(ms->m_lvbseq);
  	ms->m_hash		= cpu_to_le32(ms->m_hash);
  	ms->m_status		= cpu_to_le32(ms->m_status);
  	ms->m_grmode		= cpu_to_le32(ms->m_grmode);
  	ms->m_rqmode		= cpu_to_le32(ms->m_rqmode);
  	ms->m_bastmode		= cpu_to_le32(ms->m_bastmode);
  	ms->m_asts		= cpu_to_le32(ms->m_asts);
861e2369e   David Teigland   dlm: use fixed er...
103
  	ms->m_result		= cpu_to_le32(to_dlm_errno(ms->m_result));
e7fd41792   David Teigland   [DLM] The core of...
104
105
106
107
  }
  
  void dlm_message_in(struct dlm_message *ms)
  {
dbcfc3473   David Teigland   dlm: clean ups
108
  	header_in(&ms->m_header);
e7fd41792   David Teigland   [DLM] The core of...
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
  
  	ms->m_type		= le32_to_cpu(ms->m_type);
  	ms->m_nodeid		= le32_to_cpu(ms->m_nodeid);
  	ms->m_pid		= le32_to_cpu(ms->m_pid);
  	ms->m_lkid		= le32_to_cpu(ms->m_lkid);
  	ms->m_remid		= le32_to_cpu(ms->m_remid);
  	ms->m_parent_lkid	= le32_to_cpu(ms->m_parent_lkid);
  	ms->m_parent_remid	= le32_to_cpu(ms->m_parent_remid);
  	ms->m_exflags		= le32_to_cpu(ms->m_exflags);
  	ms->m_sbflags		= le32_to_cpu(ms->m_sbflags);
  	ms->m_flags		= le32_to_cpu(ms->m_flags);
  	ms->m_lvbseq		= le32_to_cpu(ms->m_lvbseq);
  	ms->m_hash		= le32_to_cpu(ms->m_hash);
  	ms->m_status		= le32_to_cpu(ms->m_status);
  	ms->m_grmode		= le32_to_cpu(ms->m_grmode);
  	ms->m_rqmode		= le32_to_cpu(ms->m_rqmode);
  	ms->m_bastmode		= le32_to_cpu(ms->m_bastmode);
  	ms->m_asts		= le32_to_cpu(ms->m_asts);
861e2369e   David Teigland   dlm: use fixed er...
127
  	ms->m_result		= from_dlm_errno(le32_to_cpu(ms->m_result));
e7fd41792   David Teigland   [DLM] The core of...
128
  }
e7fd41792   David Teigland   [DLM] The core of...
129
130
  void dlm_rcom_out(struct dlm_rcom *rc)
  {
dbcfc3473   David Teigland   dlm: clean ups
131
  	header_out(&rc->rc_header);
e7fd41792   David Teigland   [DLM] The core of...
132
133
134
135
  
  	rc->rc_type		= cpu_to_le32(rc->rc_type);
  	rc->rc_result		= cpu_to_le32(rc->rc_result);
  	rc->rc_id		= cpu_to_le64(rc->rc_id);
38aa8b0c5   David Teigland   [DLM] fix old rco...
136
137
  	rc->rc_seq		= cpu_to_le64(rc->rc_seq);
  	rc->rc_seq_reply	= cpu_to_le64(rc->rc_seq_reply);
e7fd41792   David Teigland   [DLM] The core of...
138
139
140
141
  }
  
  void dlm_rcom_in(struct dlm_rcom *rc)
  {
dbcfc3473   David Teigland   dlm: clean ups
142
  	header_in(&rc->rc_header);
e7fd41792   David Teigland   [DLM] The core of...
143
144
145
146
  
  	rc->rc_type		= le32_to_cpu(rc->rc_type);
  	rc->rc_result		= le32_to_cpu(rc->rc_result);
  	rc->rc_id		= le64_to_cpu(rc->rc_id);
38aa8b0c5   David Teigland   [DLM] fix old rco...
147
148
  	rc->rc_seq		= le64_to_cpu(rc->rc_seq);
  	rc->rc_seq_reply	= le64_to_cpu(rc->rc_seq_reply);
e7fd41792   David Teigland   [DLM] The core of...
149
  }