aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_mount.h
diff options
context:
space:
mode:
authorDavid Chinner <dgc@sgi.com>2006-03-13 21:29:16 -0500
committerNathan Scott <nathans@sgi.com>2006-03-13 21:29:16 -0500
commit01e1b69cfcdcfdd5b405165eaba29428f8b18a7c (patch)
tree3ca7e8d0047ff03ca532f39b0fc4cd50381e8ecc /fs/xfs/xfs_mount.h
parent87cbc49cd4b773a972bce56c5dd09c4717f3285b (diff)
[XFS] using a spinlock per cpu for superblock counter exclusion results in
a preēmpt counter overflow at 256p and above. Change the exclusion mechanism to use atomic bit operations and busy wait loops to emulate the spin lock exclusion mechanism but without the preempt count issues. SGI-PV: 950027 SGI-Modid: xfs-linux-melb:xfs-kern:25338a Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Nathan Scott <nathans@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_mount.h')
-rw-r--r--fs/xfs/xfs_mount.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
index 9d2ffbdc37a9..29cfcf0c11be 100644
--- a/fs/xfs/xfs_mount.h
+++ b/fs/xfs/xfs_mount.h
@@ -280,9 +280,11 @@ typedef struct xfs_icsb_cnts {
280 uint64_t icsb_fdblocks; 280 uint64_t icsb_fdblocks;
281 uint64_t icsb_ifree; 281 uint64_t icsb_ifree;
282 uint64_t icsb_icount; 282 uint64_t icsb_icount;
283 spinlock_t icsb_lock; 283 unsigned long icsb_flags;
284} xfs_icsb_cnts_t; 284} xfs_icsb_cnts_t;
285 285
286#define XFS_ICSB_FLAG_LOCK (1 << 0) /* counter lock bit */
287
286#define XFS_ICSB_SB_LOCKED (1 << 0) /* sb already locked */ 288#define XFS_ICSB_SB_LOCKED (1 << 0) /* sb already locked */
287#define XFS_ICSB_LAZY_COUNT (1 << 1) /* accuracy not needed */ 289#define XFS_ICSB_LAZY_COUNT (1 << 1) /* accuracy not needed */
288 290