diff options
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r-- | fs/fuse/fuse_i.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index 7ed1d3c53b8a..46cf933aa3bf 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h | |||
@@ -94,6 +94,11 @@ struct fuse_out { | |||
94 | /** Header returned from userspace */ | 94 | /** Header returned from userspace */ |
95 | struct fuse_out_header h; | 95 | struct fuse_out_header h; |
96 | 96 | ||
97 | /* | ||
98 | * The following bitfields are not changed during the request | ||
99 | * processing | ||
100 | */ | ||
101 | |||
97 | /** Last argument is variable length (can be shorter than | 102 | /** Last argument is variable length (can be shorter than |
98 | arg->size) */ | 103 | arg->size) */ |
99 | unsigned argvar:1; | 104 | unsigned argvar:1; |
@@ -136,6 +141,12 @@ struct fuse_req { | |||
136 | /** refcount */ | 141 | /** refcount */ |
137 | atomic_t count; | 142 | atomic_t count; |
138 | 143 | ||
144 | /* | ||
145 | * The following bitfields are either set once before the | ||
146 | * request is queued or setting/clearing them is protected by | ||
147 | * fuse_lock | ||
148 | */ | ||
149 | |||
139 | /** True if the request has reply */ | 150 | /** True if the request has reply */ |
140 | unsigned isreply:1; | 151 | unsigned isreply:1; |
141 | 152 | ||
@@ -250,15 +261,22 @@ struct fuse_conn { | |||
250 | u64 reqctr; | 261 | u64 reqctr; |
251 | 262 | ||
252 | /** Mount is active */ | 263 | /** Mount is active */ |
253 | unsigned mounted : 1; | 264 | unsigned mounted; |
254 | 265 | ||
255 | /** Connection established, cleared on umount, connection | 266 | /** Connection established, cleared on umount, connection |
256 | abort and device release */ | 267 | abort and device release */ |
257 | unsigned connected : 1; | 268 | unsigned connected; |
258 | 269 | ||
259 | /** Connection failed (version mismatch) */ | 270 | /** Connection failed (version mismatch). Cannot race with |
271 | setting other bitfields since it is only set once in INIT | ||
272 | reply, before any other request, and never cleared */ | ||
260 | unsigned conn_error : 1; | 273 | unsigned conn_error : 1; |
261 | 274 | ||
275 | /* | ||
276 | * The following bitfields are only for optimization purposes | ||
277 | * and hence races in setting them will not cause malfunction | ||
278 | */ | ||
279 | |||
262 | /** Is fsync not implemented by fs? */ | 280 | /** Is fsync not implemented by fs? */ |
263 | unsigned no_fsync : 1; | 281 | unsigned no_fsync : 1; |
264 | 282 | ||