Commit 869b9060 authored by Eric Sandeen's avatar Eric Sandeen Committed by Lachlan McIlroy

[XFS] Unwrap XFS_DQ_PINUNLOCK.

Un-obfuscate DQ_PINLOCK, remove DQ_PINLOCK->mutex_lock->spin_lock macros,
call spin_lock directly, remove extraneous cookie holdover from old xfs
code, and change lock type to spinlock_t.

SGI-PV: 970382
SGI-Modid: xfs-linux-melb:xfs-kern:29742a
Signed-off-by: default avatarEric Sandeen <sandeen@sandeen.net>
Signed-off-by: default avatarDonald Douwsma <donaldd@sgi.com>
Signed-off-by: default avatarTim Shimmin <tes@sgi.com>
parent c8b5ea28
...@@ -123,11 +123,6 @@ XFS_DQ_IS_LOCKED(xfs_dquot_t *dqp) ...@@ -123,11 +123,6 @@ XFS_DQ_IS_LOCKED(xfs_dquot_t *dqp)
vsema(&((dqp)->q_flock)); \ vsema(&((dqp)->q_flock)); \
(dqp)->dq_flags &= ~(XFS_DQ_FLOCKED); } (dqp)->dq_flags &= ~(XFS_DQ_FLOCKED); }
#define XFS_DQ_PINLOCK(dqp) mutex_spinlock( \
&(XFS_DQ_TO_QINF(dqp)->qi_pinlock))
#define XFS_DQ_PINUNLOCK(dqp, s) mutex_spinunlock( \
&(XFS_DQ_TO_QINF(dqp)->qi_pinlock), s)
#define XFS_DQ_IS_FLUSH_LOCKED(dqp) (issemalocked(&((dqp)->q_flock))) #define XFS_DQ_IS_FLUSH_LOCKED(dqp) (issemalocked(&((dqp)->q_flock)))
#define XFS_DQ_IS_ON_FREELIST(dqp) ((dqp)->dq_flnext != (dqp)) #define XFS_DQ_IS_ON_FREELIST(dqp) ((dqp)->dq_flnext != (dqp))
#define XFS_DQ_IS_DIRTY(dqp) ((dqp)->dq_flags & XFS_DQ_DIRTY) #define XFS_DQ_IS_DIRTY(dqp) ((dqp)->dq_flags & XFS_DQ_DIRTY)
......
...@@ -94,14 +94,13 @@ STATIC void ...@@ -94,14 +94,13 @@ STATIC void
xfs_qm_dquot_logitem_pin( xfs_qm_dquot_logitem_pin(
xfs_dq_logitem_t *logitem) xfs_dq_logitem_t *logitem)
{ {
unsigned long s;
xfs_dquot_t *dqp; xfs_dquot_t *dqp;
dqp = logitem->qli_dquot; dqp = logitem->qli_dquot;
ASSERT(XFS_DQ_IS_LOCKED(dqp)); ASSERT(XFS_DQ_IS_LOCKED(dqp));
s = XFS_DQ_PINLOCK(dqp); spin_lock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
dqp->q_pincount++; dqp->q_pincount++;
XFS_DQ_PINUNLOCK(dqp, s); spin_unlock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
} }
/* /*
...@@ -115,17 +114,16 @@ xfs_qm_dquot_logitem_unpin( ...@@ -115,17 +114,16 @@ xfs_qm_dquot_logitem_unpin(
xfs_dq_logitem_t *logitem, xfs_dq_logitem_t *logitem,
int stale) int stale)
{ {
unsigned long s;
xfs_dquot_t *dqp; xfs_dquot_t *dqp;
dqp = logitem->qli_dquot; dqp = logitem->qli_dquot;
ASSERT(dqp->q_pincount > 0); ASSERT(dqp->q_pincount > 0);
s = XFS_DQ_PINLOCK(dqp); spin_lock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
dqp->q_pincount--; dqp->q_pincount--;
if (dqp->q_pincount == 0) { if (dqp->q_pincount == 0) {
sv_broadcast(&dqp->q_pinwait); sv_broadcast(&dqp->q_pinwait);
} }
XFS_DQ_PINUNLOCK(dqp, s); spin_unlock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
} }
/* ARGSUSED */ /* ARGSUSED */
...@@ -189,8 +187,6 @@ void ...@@ -189,8 +187,6 @@ void
xfs_qm_dqunpin_wait( xfs_qm_dqunpin_wait(
xfs_dquot_t *dqp) xfs_dquot_t *dqp)
{ {
SPLDECL(s);
ASSERT(XFS_DQ_IS_LOCKED(dqp)); ASSERT(XFS_DQ_IS_LOCKED(dqp));
if (dqp->q_pincount == 0) { if (dqp->q_pincount == 0) {
return; return;
...@@ -200,9 +196,9 @@ xfs_qm_dqunpin_wait( ...@@ -200,9 +196,9 @@ xfs_qm_dqunpin_wait(
* Give the log a push so we don't wait here too long. * Give the log a push so we don't wait here too long.
*/ */
xfs_log_force(dqp->q_mount, (xfs_lsn_t)0, XFS_LOG_FORCE); xfs_log_force(dqp->q_mount, (xfs_lsn_t)0, XFS_LOG_FORCE);
s = XFS_DQ_PINLOCK(dqp); spin_lock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
if (dqp->q_pincount == 0) { if (dqp->q_pincount == 0) {
XFS_DQ_PINUNLOCK(dqp, s); spin_unlock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
return; return;
} }
sv_wait(&(dqp->q_pinwait), PINOD, sv_wait(&(dqp->q_pinwait), PINOD,
......
...@@ -106,7 +106,7 @@ typedef struct xfs_qm { ...@@ -106,7 +106,7 @@ typedef struct xfs_qm {
typedef struct xfs_quotainfo { typedef struct xfs_quotainfo {
xfs_inode_t *qi_uquotaip; /* user quota inode */ xfs_inode_t *qi_uquotaip; /* user quota inode */
xfs_inode_t *qi_gquotaip; /* group quota inode */ xfs_inode_t *qi_gquotaip; /* group quota inode */
lock_t qi_pinlock; /* dquot pinning mutex */ spinlock_t qi_pinlock; /* dquot pinning lock */
xfs_dqlist_t qi_dqlist; /* all dquots in filesys */ xfs_dqlist_t qi_dqlist; /* all dquots in filesys */
int qi_dqreclaims; /* a change here indicates int qi_dqreclaims; /* a change here indicates
a removal in the dqlist */ a removal in the dqlist */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment