hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/fs/nfs/pnfs_dev.c
....@@ -94,7 +94,7 @@
9494 static struct nfs4_deviceid_node *
9595 nfs4_get_device_info(struct nfs_server *server,
9696 const struct nfs4_deviceid *dev_id,
97
- struct rpc_cred *cred, gfp_t gfp_flags)
97
+ const struct cred *cred, gfp_t gfp_flags)
9898 {
9999 struct nfs4_deviceid_node *d = NULL;
100100 struct pnfs_device *pdev = NULL;
....@@ -184,7 +184,7 @@
184184
185185 struct nfs4_deviceid_node *
186186 nfs4_find_get_deviceid(struct nfs_server *server,
187
- const struct nfs4_deviceid *id, struct rpc_cred *cred,
187
+ const struct nfs4_deviceid *id, const struct cred *cred,
188188 gfp_t gfp_mask)
189189 {
190190 long hash = nfs4_deviceid_hash(id);
....@@ -284,10 +284,22 @@
284284 EXPORT_SYMBOL_GPL(nfs4_put_deviceid_node);
285285
286286 void
287
+nfs4_mark_deviceid_available(struct nfs4_deviceid_node *node)
288
+{
289
+ if (test_bit(NFS_DEVICEID_UNAVAILABLE, &node->flags)) {
290
+ clear_bit(NFS_DEVICEID_UNAVAILABLE, &node->flags);
291
+ smp_mb__after_atomic();
292
+ }
293
+}
294
+EXPORT_SYMBOL_GPL(nfs4_mark_deviceid_available);
295
+
296
+void
287297 nfs4_mark_deviceid_unavailable(struct nfs4_deviceid_node *node)
288298 {
289299 node->timestamp_unavailable = jiffies;
300
+ smp_mb__before_atomic();
290301 set_bit(NFS_DEVICEID_UNAVAILABLE, &node->flags);
302
+ smp_mb__after_atomic();
291303 }
292304 EXPORT_SYMBOL_GPL(nfs4_mark_deviceid_unavailable);
293305
....@@ -302,6 +314,7 @@
302314 if (time_in_range(node->timestamp_unavailable, start, end))
303315 return true;
304316 clear_bit(NFS_DEVICEID_UNAVAILABLE, &node->flags);
317
+ smp_mb__after_atomic();
305318 }
306319 return false;
307320 }