forked from deepseek-ai/3FS
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStatusCode.cc
More file actions
107 lines (96 loc) · 2.57 KB
/
Copy pathStatusCode.cc
File metadata and controls
107 lines (96 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "StatusCode.h"
#include <asm-generic/errno-base.h>
#include <asm-generic/errno.h>
#include <cerrno>
namespace hf3fs::StatusCode {
std::string_view toString(status_code_t code) {
switch (code) {
#define RAW_STATUS(name, ...) \
case k##name: \
return #name;
#define STATUS(ns, name, ...) \
case ns##Code::k##name: \
return #ns "::" #name;
#include "StatusCodeDetails.h"
#undef RAW_STATUS
#undef STATUS
};
return "UnknownStatusCode";
}
StatusCodeType typeOf(status_code_t code) {
switch (code) {
#define RAW_STATUS(name, ...) \
case k##name: \
return StatusCodeType::Common;
#define STATUS(ns, name, ...) \
case ns##Code::k##name: \
return StatusCodeType::ns;
#include "StatusCodeDetails.h"
#undef RAW_STATUS
#undef STATUS
};
return StatusCodeType::Invalid;
}
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;
}
}
} // namespace hf3fs::StatusCode