|
26 | 26 | * Copyright 2020 Joyent, Inc.
|
27 | 27 | * Copyright (c) 2014, OmniTI Computer Consulting, Inc. All rights reserved.
|
28 | 28 | * Copyright 2022 Garrett D'Amore <[email protected]>
|
| 29 | + * Copyright 2024 Oxide Computer Company |
29 | 30 | */
|
30 | 31 |
|
31 | 32 | /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
|
|
111 | 112 | #include "proto.h"
|
112 | 113 |
|
113 | 114 | #define FCNTLMIN F_DUPFD
|
114 |
| -#define FCNTLMAX F_FLOCKW |
| 115 | +#define FCNTLMAX F_DUP3FD |
115 | 116 | const char *const FCNTLname[] = {
|
116 |
| - "F_DUPFD", |
117 |
| - "F_GETFD", |
118 |
| - "F_SETFD", |
119 |
| - "F_GETFL", |
120 |
| - "F_SETFL", |
121 |
| - "F_O_GETLK", |
122 |
| - "F_SETLK", |
123 |
| - "F_SETLKW", |
124 |
| - "F_CHKFL", |
125 |
| - "F_DUP2FD", |
126 |
| - "F_ALLOCSP", |
127 |
| - "F_FREESP", |
128 |
| - NULL, /* 12 */ |
129 |
| - NULL, /* 13 */ |
130 |
| - "F_GETLK", |
131 |
| - NULL, /* 15 */ |
132 |
| - NULL, /* 16 */ |
133 |
| - NULL, /* 17 */ |
134 |
| - NULL, /* 18 */ |
135 |
| - NULL, /* 19 */ |
136 |
| - NULL, /* 20 */ |
137 |
| - NULL, /* 21 */ |
138 |
| - NULL, /* 22 */ |
139 |
| - "F_GETOWN", |
140 |
| - "F_SETOWN", |
141 |
| - "F_REVOKE", |
142 |
| - "F_HASREMOTELOCKS", |
143 |
| - "F_FREESP64", |
144 |
| - NULL, /* 28 */ |
145 |
| - NULL, /* 29 */ |
146 |
| - NULL, /* 30 */ |
147 |
| - NULL, /* 31 */ |
148 |
| - NULL, /* 32 */ |
149 |
| - "F_GETLK64", |
150 |
| - "F_SETLK64", |
151 |
| - "F_SETLKW64", |
152 |
| - "F_DUP2FD_CLOEXEC", |
153 |
| - "F_DUPFD_CLOEXEC", |
154 |
| - NULL, /* 38 */ |
155 |
| - NULL, /* 39 */ |
156 |
| - "F_SHARE", |
157 |
| - "F_UNSHARE", |
158 |
| - "F_SETLK_NBMAND", |
159 |
| - "F_SHARE_NBMAND", |
160 |
| - "F_SETLK64_NBMAND", |
161 |
| - NULL, /* 45 */ |
162 |
| - "F_BADFD", |
163 |
| - "F_OFD_GETLK", |
164 |
| - "F_OFD_SETLK", |
165 |
| - "F_OFD_SETLKW", |
166 |
| - NULL, /* 50 */ |
167 |
| - NULL, /* 51 */ |
168 |
| - NULL, /* 52 */ |
169 |
| - "F_FLOCK", |
170 |
| - "F_FLOCKW" |
| 117 | + [0] = "F_DUPFD", |
| 118 | + [1] = "F_GETFD", |
| 119 | + [2] = "F_SETFD", |
| 120 | + [3] = "F_GETFL", |
| 121 | + [4] = "F_SETFL", |
| 122 | + [5] = "F_O_GETLK", |
| 123 | + [6] = "F_SETLK", |
| 124 | + [7] = "F_SETLKW", |
| 125 | + [8] = "F_CHKFL", |
| 126 | + [9] = "F_DUP2FD", |
| 127 | + [10] = "F_ALLOCSP", |
| 128 | + [11] = "F_FREESP", |
| 129 | + [13] = "F_ISSTREAM", |
| 130 | + [14] = "F_GETLK", |
| 131 | + [15] = "F_PRIV", |
| 132 | + [16] = "F_NPRIV", |
| 133 | + [17] = "F_QUOTACTL", |
| 134 | + [18] = "F_BLOCKS", |
| 135 | + [19] = "F_BLKSIZE", |
| 136 | + [23] = "F_GETOWN", |
| 137 | + [24] = "F_SETOWN", |
| 138 | + [25] = "F_REVOKE", |
| 139 | + [26] = "F_HASREMOTELOCKS", |
| 140 | + [27] = "F_FREESP64", |
| 141 | + [28] = "F_ALLOCSP64", |
| 142 | + [33] = "F_GETLK64", |
| 143 | + [34] = "F_SETLK64", |
| 144 | + [35] = "F_SETLKW64", |
| 145 | + [36] = "F_DUP2FD_CLOEXEC", |
| 146 | + [37] = "F_DUPFD_CLOEXEC", |
| 147 | + [40] = "F_SHARE", |
| 148 | + [41] = "F_UNSHARE", |
| 149 | + [42] = "F_SETLK_NBMAND", |
| 150 | + [43] = "F_SHARE_NBMAND", |
| 151 | + [44] = "F_SETLK64_NBMAND", |
| 152 | + [45] = "F_GETXFL", |
| 153 | + [46] = "F_BADFD", |
| 154 | + [47] = "F_OFD_GETLK", |
| 155 | + [48] = "F_OFD_SETLK", |
| 156 | + [49] = "F_OFD_SETLKW", |
| 157 | + [50] = "F_OFD_GETLK64", |
| 158 | + [51] = "F_OFD_SETLK64", |
| 159 | + [52] = "F_OFD_SETLKW64", |
| 160 | + [53] = "F_FLOCK", |
| 161 | + [54] = "F_FLOCKW", |
| 162 | + [55] = "F_FLOCK64", |
| 163 | + [56] = "F_FLOCKW64", |
| 164 | + [57] = "F_DUP2FD_CLOFORK", |
| 165 | + [58] = "F_DUPFD_CLOFORK", |
| 166 | + [59] = "F_DUP3FD" |
171 | 167 | };
|
172 | 168 |
|
173 | 169 | #define SYSFSMIN GETFSIND
|
@@ -2203,7 +2199,7 @@ pathconfname(int code)
|
2203 | 2199 | #define ALL_O_FLAGS \
|
2204 | 2200 | (O_NDELAY|O_APPEND|O_SYNC|O_DSYNC|O_NONBLOCK|O_CREAT|O_TRUNC\
|
2205 | 2201 | |O_EXCL|O_NOCTTY|O_LARGEFILE|O_RSYNC|O_XATTR|O_NOFOLLOW|O_NOLINKS\
|
2206 |
| - |O_CLOEXEC|O_DIRECTORY|O_DIRECT|FXATTRDIROPEN) |
| 2202 | + |O_CLOEXEC|O_DIRECTORY|O_DIRECT|O_CLOFORK|FXATTRDIROPEN) |
2207 | 2203 |
|
2208 | 2204 | const char *
|
2209 | 2205 | openarg(private_t *pri, int arg)
|
@@ -2267,6 +2263,8 @@ openarg(private_t *pri, int arg)
|
2267 | 2263 | (void) strlcat(str, "|O_DIRECTORY", sizeof (pri->code_buf));
|
2268 | 2264 | if (arg & O_DIRECT)
|
2269 | 2265 | (void) strlcat(str, "|O_DIRECT", sizeof (pri->code_buf));
|
| 2266 | + if (arg & O_CLOFORK) |
| 2267 | + (void) strlcat(str, "|O_CLOFORK", sizeof (pri->code_buf)); |
2270 | 2268 | if (arg & FXATTRDIROPEN)
|
2271 | 2269 | (void) strlcat(str, "|FXATTRDIROPEN", sizeof (pri->code_buf));
|
2272 | 2270 |
|
|
0 commit comments