diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 23:39:14 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 23:39:14 -0400 |
commit | 39bf09493042200b967cdf2ee6e3f670b7963903 (patch) | |
tree | 081f76ef36a7ac43dd756dea1f9201caba7c821b /fs/afs/internal.h | |
parent | 68c708fd5e90f6d178c84bb7e641589eb2842319 (diff) |
[AFS]: Eliminate cmpxchg() usage in vlocation code.
cmpxchg() is not available on every processor so can't
be used in generic code.
Replace with spinlock protection on the ->state changes,
wakeups, and wait loops.
Add what appears to be a missing wakeup on transition
to AFS_VL_VALID state in afs_vlocation_updater().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'fs/afs/internal.h')
-rw-r--r-- | fs/afs/internal.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/afs/internal.h b/fs/afs/internal.h index 73bfa0b2d99e..6dd3197d1d8d 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h | |||
@@ -219,7 +219,7 @@ struct afs_vlocation { | |||
219 | struct afs_volume *vols[3]; /* volume access record pointer (index by type) */ | 219 | struct afs_volume *vols[3]; /* volume access record pointer (index by type) */ |
220 | wait_queue_head_t waitq; /* status change waitqueue */ | 220 | wait_queue_head_t waitq; /* status change waitqueue */ |
221 | time_t update_at; /* time at which record should be updated */ | 221 | time_t update_at; /* time at which record should be updated */ |
222 | rwlock_t lock; /* access lock */ | 222 | spinlock_t lock; /* access lock */ |
223 | afs_vlocation_state_t state; /* volume location state */ | 223 | afs_vlocation_state_t state; /* volume location state */ |
224 | unsigned short upd_rej_cnt; /* ENOMEDIUM count during update */ | 224 | unsigned short upd_rej_cnt; /* ENOMEDIUM count during update */ |
225 | unsigned short upd_busy_cnt; /* EBUSY count during update */ | 225 | unsigned short upd_busy_cnt; /* EBUSY count during update */ |