diff options
author | Jes Sorensen <jes@trained-monkey.org> | 2006-01-09 18:59:21 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@hera.kernel.org> | 2006-01-09 18:59:21 -0500 |
commit | 794ee1baee1c26be40410233e6c20bceb2b03c08 (patch) | |
tree | 1173a5cca98ddfbc1520d2d124af6d16bf950df2 /fs | |
parent | de5097c2e73f826302cd8957c225b3725e0c7553 (diff) |
[PATCH] mutex subsystem, semaphore to mutex: XFS
This patch switches XFS over to use the new mutex code directly as
opposed to the previous workaround patch I posted earlier that avoided
the namespace clash by forcing it back to semaphores. This falls in the
'works for me<tm>' category.
Signed-off-by: Jes Sorensen <jes@trained-monkey.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/linux-2.6/mutex.h | 10 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_dquot.c | 4 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm.c | 10 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm.h | 2 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm_bhv.c | 2 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_qm_syscalls.c | 8 | ||||
-rw-r--r-- | fs/xfs/quota/xfs_quota_priv.h | 2 | ||||
-rw-r--r-- | fs/xfs/support/uuid.c | 6 | ||||
-rw-r--r-- | fs/xfs/xfs_mount.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_mount.h | 2 |
10 files changed, 22 insertions, 26 deletions
diff --git a/fs/xfs/linux-2.6/mutex.h b/fs/xfs/linux-2.6/mutex.h index ce773d89a92..d3369b6ca16 100644 --- a/fs/xfs/linux-2.6/mutex.h +++ b/fs/xfs/linux-2.6/mutex.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #define __XFS_SUPPORT_MUTEX_H__ | 19 | #define __XFS_SUPPORT_MUTEX_H__ |
20 | 20 | ||
21 | #include <linux/spinlock.h> | 21 | #include <linux/spinlock.h> |
22 | #include <asm/semaphore.h> | 22 | #include <linux/mutex.h> |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * Map the mutex'es from IRIX to Linux semaphores. | 25 | * Map the mutex'es from IRIX to Linux semaphores. |
@@ -28,12 +28,8 @@ | |||
28 | * callers. | 28 | * callers. |
29 | */ | 29 | */ |
30 | #define MUTEX_DEFAULT 0x0 | 30 | #define MUTEX_DEFAULT 0x0 |
31 | typedef struct semaphore mutex_t; | ||
32 | 31 | ||
33 | #define mutex_init(lock, type, name) sema_init(lock, 1) | 32 | typedef struct mutex mutex_t; |
34 | #define mutex_destroy(lock) sema_init(lock, -99) | 33 | //#define mutex_destroy(lock) do{}while(0) |
35 | #define mutex_lock(lock, num) down(lock) | ||
36 | #define mutex_trylock(lock) (down_trylock(lock) ? 0 : 1) | ||
37 | #define mutex_unlock(lock) up(lock) | ||
38 | 34 | ||
39 | #endif /* __XFS_SUPPORT_MUTEX_H__ */ | 35 | #endif /* __XFS_SUPPORT_MUTEX_H__ */ |
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index 00b5043dfa5..772ac48329e 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c | |||
@@ -104,7 +104,7 @@ xfs_qm_dqinit( | |||
104 | */ | 104 | */ |
105 | if (brandnewdquot) { | 105 | if (brandnewdquot) { |
106 | dqp->dq_flnext = dqp->dq_flprev = dqp; | 106 | dqp->dq_flnext = dqp->dq_flprev = dqp; |
107 | mutex_init(&dqp->q_qlock, MUTEX_DEFAULT, "xdq"); | 107 | mutex_init(&dqp->q_qlock); |
108 | initnsema(&dqp->q_flock, 1, "fdq"); | 108 | initnsema(&dqp->q_flock, 1, "fdq"); |
109 | sv_init(&dqp->q_pinwait, SV_DEFAULT, "pdq"); | 109 | sv_init(&dqp->q_pinwait, SV_DEFAULT, "pdq"); |
110 | 110 | ||
@@ -1382,7 +1382,7 @@ void | |||
1382 | xfs_dqlock( | 1382 | xfs_dqlock( |
1383 | xfs_dquot_t *dqp) | 1383 | xfs_dquot_t *dqp) |
1384 | { | 1384 | { |
1385 | mutex_lock(&(dqp->q_qlock), PINOD); | 1385 | mutex_lock(&(dqp->q_qlock)); |
1386 | } | 1386 | } |
1387 | 1387 | ||
1388 | void | 1388 | void |
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 5328a293712..bb6991a7a61 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -167,7 +167,7 @@ xfs_Gqm_init(void) | |||
167 | xqm->qm_dqfree_ratio = XFS_QM_DQFREE_RATIO; | 167 | xqm->qm_dqfree_ratio = XFS_QM_DQFREE_RATIO; |
168 | xqm->qm_nrefs = 0; | 168 | xqm->qm_nrefs = 0; |
169 | #ifdef DEBUG | 169 | #ifdef DEBUG |
170 | mutex_init(&qcheck_lock, MUTEX_DEFAULT, "qchk"); | 170 | xfs_mutex_init(&qcheck_lock, MUTEX_DEFAULT, "qchk"); |
171 | #endif | 171 | #endif |
172 | return xqm; | 172 | return xqm; |
173 | } | 173 | } |
@@ -1166,7 +1166,7 @@ xfs_qm_init_quotainfo( | |||
1166 | qinf->qi_dqreclaims = 0; | 1166 | qinf->qi_dqreclaims = 0; |
1167 | 1167 | ||
1168 | /* mutex used to serialize quotaoffs */ | 1168 | /* mutex used to serialize quotaoffs */ |
1169 | mutex_init(&qinf->qi_quotaofflock, MUTEX_DEFAULT, "qoff"); | 1169 | mutex_init(&qinf->qi_quotaofflock); |
1170 | 1170 | ||
1171 | /* Precalc some constants */ | 1171 | /* Precalc some constants */ |
1172 | qinf->qi_dqchunklen = XFS_FSB_TO_BB(mp, XFS_DQUOT_CLUSTER_SIZE_FSB); | 1172 | qinf->qi_dqchunklen = XFS_FSB_TO_BB(mp, XFS_DQUOT_CLUSTER_SIZE_FSB); |
@@ -1285,7 +1285,7 @@ xfs_qm_list_init( | |||
1285 | char *str, | 1285 | char *str, |
1286 | int n) | 1286 | int n) |
1287 | { | 1287 | { |
1288 | mutex_init(&list->qh_lock, MUTEX_DEFAULT, str); | 1288 | mutex_init(&list->qh_lock); |
1289 | list->qh_next = NULL; | 1289 | list->qh_next = NULL; |
1290 | list->qh_version = 0; | 1290 | list->qh_version = 0; |
1291 | list->qh_nelems = 0; | 1291 | list->qh_nelems = 0; |
@@ -2762,7 +2762,7 @@ STATIC void | |||
2762 | xfs_qm_freelist_init(xfs_frlist_t *ql) | 2762 | xfs_qm_freelist_init(xfs_frlist_t *ql) |
2763 | { | 2763 | { |
2764 | ql->qh_next = ql->qh_prev = (xfs_dquot_t *) ql; | 2764 | ql->qh_next = ql->qh_prev = (xfs_dquot_t *) ql; |
2765 | mutex_init(&ql->qh_lock, MUTEX_DEFAULT, "dqf"); | 2765 | mutex_init(&ql->qh_lock); |
2766 | ql->qh_version = 0; | 2766 | ql->qh_version = 0; |
2767 | ql->qh_nelems = 0; | 2767 | ql->qh_nelems = 0; |
2768 | } | 2768 | } |
@@ -2772,7 +2772,7 @@ xfs_qm_freelist_destroy(xfs_frlist_t *ql) | |||
2772 | { | 2772 | { |
2773 | xfs_dquot_t *dqp, *nextdqp; | 2773 | xfs_dquot_t *dqp, *nextdqp; |
2774 | 2774 | ||
2775 | mutex_lock(&ql->qh_lock, PINOD); | 2775 | mutex_lock(&ql->qh_lock); |
2776 | for (dqp = ql->qh_next; | 2776 | for (dqp = ql->qh_next; |
2777 | dqp != (xfs_dquot_t *)ql; ) { | 2777 | dqp != (xfs_dquot_t *)ql; ) { |
2778 | xfs_dqlock(dqp); | 2778 | xfs_dqlock(dqp); |
diff --git a/fs/xfs/quota/xfs_qm.h b/fs/xfs/quota/xfs_qm.h index 12da259f2fc..4568deb6da8 100644 --- a/fs/xfs/quota/xfs_qm.h +++ b/fs/xfs/quota/xfs_qm.h | |||
@@ -165,7 +165,7 @@ typedef struct xfs_dquot_acct { | |||
165 | #define XFS_QM_IWARNLIMIT 5 | 165 | #define XFS_QM_IWARNLIMIT 5 |
166 | #define XFS_QM_RTBWARNLIMIT 5 | 166 | #define XFS_QM_RTBWARNLIMIT 5 |
167 | 167 | ||
168 | #define XFS_QM_LOCK(xqm) (mutex_lock(&xqm##_lock, PINOD)) | 168 | #define XFS_QM_LOCK(xqm) (mutex_lock(&xqm##_lock)) |
169 | #define XFS_QM_UNLOCK(xqm) (mutex_unlock(&xqm##_lock)) | 169 | #define XFS_QM_UNLOCK(xqm) (mutex_unlock(&xqm##_lock)) |
170 | #define XFS_QM_HOLD(xqm) ((xqm)->qm_nrefs++) | 170 | #define XFS_QM_HOLD(xqm) ((xqm)->qm_nrefs++) |
171 | #define XFS_QM_RELE(xqm) ((xqm)->qm_nrefs--) | 171 | #define XFS_QM_RELE(xqm) ((xqm)->qm_nrefs--) |
diff --git a/fs/xfs/quota/xfs_qm_bhv.c b/fs/xfs/quota/xfs_qm_bhv.c index d9d2993de43..90402a1c398 100644 --- a/fs/xfs/quota/xfs_qm_bhv.c +++ b/fs/xfs/quota/xfs_qm_bhv.c | |||
@@ -363,7 +363,7 @@ xfs_qm_init(void) | |||
363 | KERN_INFO "SGI XFS Quota Management subsystem\n"; | 363 | KERN_INFO "SGI XFS Quota Management subsystem\n"; |
364 | 364 | ||
365 | printk(message); | 365 | printk(message); |
366 | mutex_init(&xfs_Gqm_lock, MUTEX_DEFAULT, "xfs_qmlock"); | 366 | mutex_init(&xfs_Gqm_lock); |
367 | vfs_bhv_set_custom(&xfs_qmops, &xfs_qmcore_xfs); | 367 | vfs_bhv_set_custom(&xfs_qmops, &xfs_qmcore_xfs); |
368 | xfs_qm_init_procfs(); | 368 | xfs_qm_init_procfs(); |
369 | } | 369 | } |
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index 24690e1af65..86a1d09f48d 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c | |||
@@ -233,7 +233,7 @@ xfs_qm_scall_quotaoff( | |||
233 | */ | 233 | */ |
234 | ASSERT(mp->m_quotainfo); | 234 | ASSERT(mp->m_quotainfo); |
235 | if (mp->m_quotainfo) | 235 | if (mp->m_quotainfo) |
236 | mutex_lock(&(XFS_QI_QOFFLOCK(mp)), PINOD); | 236 | mutex_lock(&(XFS_QI_QOFFLOCK(mp))); |
237 | 237 | ||
238 | ASSERT(mp->m_quotainfo); | 238 | ASSERT(mp->m_quotainfo); |
239 | 239 | ||
@@ -508,7 +508,7 @@ xfs_qm_scall_quotaon( | |||
508 | /* | 508 | /* |
509 | * Switch on quota enforcement in core. | 509 | * Switch on quota enforcement in core. |
510 | */ | 510 | */ |
511 | mutex_lock(&(XFS_QI_QOFFLOCK(mp)), PINOD); | 511 | mutex_lock(&(XFS_QI_QOFFLOCK(mp))); |
512 | mp->m_qflags |= (flags & XFS_ALL_QUOTA_ENFD); | 512 | mp->m_qflags |= (flags & XFS_ALL_QUOTA_ENFD); |
513 | mutex_unlock(&(XFS_QI_QOFFLOCK(mp))); | 513 | mutex_unlock(&(XFS_QI_QOFFLOCK(mp))); |
514 | 514 | ||
@@ -617,7 +617,7 @@ xfs_qm_scall_setqlim( | |||
617 | * a quotaoff from happening). (XXXThis doesn't currently happen | 617 | * a quotaoff from happening). (XXXThis doesn't currently happen |
618 | * because we take the vfslock before calling xfs_qm_sysent). | 618 | * because we take the vfslock before calling xfs_qm_sysent). |
619 | */ | 619 | */ |
620 | mutex_lock(&(XFS_QI_QOFFLOCK(mp)), PINOD); | 620 | mutex_lock(&(XFS_QI_QOFFLOCK(mp))); |
621 | 621 | ||
622 | /* | 622 | /* |
623 | * Get the dquot (locked), and join it to the transaction. | 623 | * Get the dquot (locked), and join it to the transaction. |
@@ -1426,7 +1426,7 @@ xfs_qm_internalqcheck( | |||
1426 | xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); | 1426 | xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); |
1427 | XFS_bflush(mp->m_ddev_targp); | 1427 | XFS_bflush(mp->m_ddev_targp); |
1428 | 1428 | ||
1429 | mutex_lock(&qcheck_lock, PINOD); | 1429 | mutex_lock(&qcheck_lock); |
1430 | /* There should be absolutely no quota activity while this | 1430 | /* There should be absolutely no quota activity while this |
1431 | is going on. */ | 1431 | is going on. */ |
1432 | qmtest_udqtab = kmem_zalloc(qmtest_hashmask * | 1432 | qmtest_udqtab = kmem_zalloc(qmtest_hashmask * |
diff --git a/fs/xfs/quota/xfs_quota_priv.h b/fs/xfs/quota/xfs_quota_priv.h index 7a9f3beb818..b7ddd04aae3 100644 --- a/fs/xfs/quota/xfs_quota_priv.h +++ b/fs/xfs/quota/xfs_quota_priv.h | |||
@@ -51,7 +51,7 @@ | |||
51 | #define XFS_QI_MPLNEXT(mp) ((mp)->m_quotainfo->qi_dqlist.qh_next) | 51 | #define XFS_QI_MPLNEXT(mp) ((mp)->m_quotainfo->qi_dqlist.qh_next) |
52 | #define XFS_QI_MPLNDQUOTS(mp) ((mp)->m_quotainfo->qi_dqlist.qh_nelems) | 52 | #define XFS_QI_MPLNDQUOTS(mp) ((mp)->m_quotainfo->qi_dqlist.qh_nelems) |
53 | 53 | ||
54 | #define XQMLCK(h) (mutex_lock(&((h)->qh_lock), PINOD)) | 54 | #define XQMLCK(h) (mutex_lock(&((h)->qh_lock))) |
55 | #define XQMUNLCK(h) (mutex_unlock(&((h)->qh_lock))) | 55 | #define XQMUNLCK(h) (mutex_unlock(&((h)->qh_lock))) |
56 | #ifdef DEBUG | 56 | #ifdef DEBUG |
57 | struct xfs_dqhash; | 57 | struct xfs_dqhash; |
diff --git a/fs/xfs/support/uuid.c b/fs/xfs/support/uuid.c index 70ce40914c8..69ec4f540c3 100644 --- a/fs/xfs/support/uuid.c +++ b/fs/xfs/support/uuid.c | |||
@@ -24,7 +24,7 @@ static uuid_t *uuid_table; | |||
24 | void | 24 | void |
25 | uuid_init(void) | 25 | uuid_init(void) |
26 | { | 26 | { |
27 | mutex_init(&uuid_monitor, MUTEX_DEFAULT, "uuid_monitor"); | 27 | mutex_init(&uuid_monitor); |
28 | } | 28 | } |
29 | 29 | ||
30 | /* | 30 | /* |
@@ -94,7 +94,7 @@ uuid_table_insert(uuid_t *uuid) | |||
94 | { | 94 | { |
95 | int i, hole; | 95 | int i, hole; |
96 | 96 | ||
97 | mutex_lock(&uuid_monitor, PVFS); | 97 | mutex_lock(&uuid_monitor); |
98 | for (i = 0, hole = -1; i < uuid_table_size; i++) { | 98 | for (i = 0, hole = -1; i < uuid_table_size; i++) { |
99 | if (uuid_is_nil(&uuid_table[i])) { | 99 | if (uuid_is_nil(&uuid_table[i])) { |
100 | hole = i; | 100 | hole = i; |
@@ -122,7 +122,7 @@ uuid_table_remove(uuid_t *uuid) | |||
122 | { | 122 | { |
123 | int i; | 123 | int i; |
124 | 124 | ||
125 | mutex_lock(&uuid_monitor, PVFS); | 125 | mutex_lock(&uuid_monitor); |
126 | for (i = 0; i < uuid_table_size; i++) { | 126 | for (i = 0; i < uuid_table_size; i++) { |
127 | if (uuid_is_nil(&uuid_table[i])) | 127 | if (uuid_is_nil(&uuid_table[i])) |
128 | continue; | 128 | continue; |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 541d5dd474b..303af86739b 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -117,7 +117,7 @@ xfs_mount_init(void) | |||
117 | 117 | ||
118 | AIL_LOCKINIT(&mp->m_ail_lock, "xfs_ail"); | 118 | AIL_LOCKINIT(&mp->m_ail_lock, "xfs_ail"); |
119 | spinlock_init(&mp->m_sb_lock, "xfs_sb"); | 119 | spinlock_init(&mp->m_sb_lock, "xfs_sb"); |
120 | mutex_init(&mp->m_ilock, MUTEX_DEFAULT, "xfs_ilock"); | 120 | mutex_init(&mp->m_ilock); |
121 | initnsema(&mp->m_growlock, 1, "xfs_grow"); | 121 | initnsema(&mp->m_growlock, 1, "xfs_grow"); |
122 | /* | 122 | /* |
123 | * Initialize the AIL. | 123 | * Initialize the AIL. |
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 08b2e0a5d80..3432fd5a398 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h | |||
@@ -533,7 +533,7 @@ typedef struct xfs_mod_sb { | |||
533 | int msb_delta; /* Change to make to specified field */ | 533 | int msb_delta; /* Change to make to specified field */ |
534 | } xfs_mod_sb_t; | 534 | } xfs_mod_sb_t; |
535 | 535 | ||
536 | #define XFS_MOUNT_ILOCK(mp) mutex_lock(&((mp)->m_ilock), PINOD) | 536 | #define XFS_MOUNT_ILOCK(mp) mutex_lock(&((mp)->m_ilock)) |
537 | #define XFS_MOUNT_IUNLOCK(mp) mutex_unlock(&((mp)->m_ilock)) | 537 | #define XFS_MOUNT_IUNLOCK(mp) mutex_unlock(&((mp)->m_ilock)) |
538 | #define XFS_SB_LOCK(mp) mutex_spinlock(&(mp)->m_sb_lock) | 538 | #define XFS_SB_LOCK(mp) mutex_spinlock(&(mp)->m_sb_lock) |
539 | #define XFS_SB_UNLOCK(mp,s) mutex_spinunlock(&(mp)->m_sb_lock,(s)) | 539 | #define XFS_SB_UNLOCK(mp,s) mutex_spinunlock(&(mp)->m_sb_lock,(s)) |