| .. | .. |
|---|
| 94 | 94 | static struct nfs4_deviceid_node * |
|---|
| 95 | 95 | nfs4_get_device_info(struct nfs_server *server, |
|---|
| 96 | 96 | const struct nfs4_deviceid *dev_id, |
|---|
| 97 | | - struct rpc_cred *cred, gfp_t gfp_flags) |
|---|
| 97 | + const struct cred *cred, gfp_t gfp_flags) |
|---|
| 98 | 98 | { |
|---|
| 99 | 99 | struct nfs4_deviceid_node *d = NULL; |
|---|
| 100 | 100 | struct pnfs_device *pdev = NULL; |
|---|
| .. | .. |
|---|
| 184 | 184 | |
|---|
| 185 | 185 | struct nfs4_deviceid_node * |
|---|
| 186 | 186 | 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, |
|---|
| 188 | 188 | gfp_t gfp_mask) |
|---|
| 189 | 189 | { |
|---|
| 190 | 190 | long hash = nfs4_deviceid_hash(id); |
|---|
| .. | .. |
|---|
| 284 | 284 | EXPORT_SYMBOL_GPL(nfs4_put_deviceid_node); |
|---|
| 285 | 285 | |
|---|
| 286 | 286 | 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 |
|---|
| 287 | 297 | nfs4_mark_deviceid_unavailable(struct nfs4_deviceid_node *node) |
|---|
| 288 | 298 | { |
|---|
| 289 | 299 | node->timestamp_unavailable = jiffies; |
|---|
| 300 | + smp_mb__before_atomic(); |
|---|
| 290 | 301 | set_bit(NFS_DEVICEID_UNAVAILABLE, &node->flags); |
|---|
| 302 | + smp_mb__after_atomic(); |
|---|
| 291 | 303 | } |
|---|
| 292 | 304 | EXPORT_SYMBOL_GPL(nfs4_mark_deviceid_unavailable); |
|---|
| 293 | 305 | |
|---|
| .. | .. |
|---|
| 302 | 314 | if (time_in_range(node->timestamp_unavailable, start, end)) |
|---|
| 303 | 315 | return true; |
|---|
| 304 | 316 | clear_bit(NFS_DEVICEID_UNAVAILABLE, &node->flags); |
|---|
| 317 | + smp_mb__after_atomic(); |
|---|
| 305 | 318 | } |
|---|
| 306 | 319 | return false; |
|---|
| 307 | 320 | } |
|---|