mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
[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: Eric Sandeen <sandeen@sandeen.net> Signed-off-by: Donald Douwsma <donaldd@sgi.com> Signed-off-by: Tim Shimmin <tes@sgi.com>
This commit is contained in:
parent
c8b5ea289f
commit
869b906078
@ -123,11 +123,6 @@ XFS_DQ_IS_LOCKED(xfs_dquot_t *dqp)
|
||||
vsema(&((dqp)->q_flock)); \
|
||||
(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_ON_FREELIST(dqp) ((dqp)->dq_flnext != (dqp))
|
||||
#define XFS_DQ_IS_DIRTY(dqp) ((dqp)->dq_flags & XFS_DQ_DIRTY)
|
||||
|
@ -94,14 +94,13 @@ STATIC void
|
||||
xfs_qm_dquot_logitem_pin(
|
||||
xfs_dq_logitem_t *logitem)
|
||||
{
|
||||
unsigned long s;
|
||||
xfs_dquot_t *dqp;
|
||||
|
||||
dqp = logitem->qli_dquot;
|
||||
ASSERT(XFS_DQ_IS_LOCKED(dqp));
|
||||
s = XFS_DQ_PINLOCK(dqp);
|
||||
spin_lock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
|
||||
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(
|
||||
xfs_dq_logitem_t *logitem,
|
||||
int stale)
|
||||
{
|
||||
unsigned long s;
|
||||
xfs_dquot_t *dqp;
|
||||
|
||||
dqp = logitem->qli_dquot;
|
||||
ASSERT(dqp->q_pincount > 0);
|
||||
s = XFS_DQ_PINLOCK(dqp);
|
||||
spin_lock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
|
||||
dqp->q_pincount--;
|
||||
if (dqp->q_pincount == 0) {
|
||||
sv_broadcast(&dqp->q_pinwait);
|
||||
}
|
||||
XFS_DQ_PINUNLOCK(dqp, s);
|
||||
spin_unlock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
@ -189,8 +187,6 @@ void
|
||||
xfs_qm_dqunpin_wait(
|
||||
xfs_dquot_t *dqp)
|
||||
{
|
||||
SPLDECL(s);
|
||||
|
||||
ASSERT(XFS_DQ_IS_LOCKED(dqp));
|
||||
if (dqp->q_pincount == 0) {
|
||||
return;
|
||||
@ -200,9 +196,9 @@ xfs_qm_dqunpin_wait(
|
||||
* 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);
|
||||
s = XFS_DQ_PINLOCK(dqp);
|
||||
spin_lock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
|
||||
if (dqp->q_pincount == 0) {
|
||||
XFS_DQ_PINUNLOCK(dqp, s);
|
||||
spin_unlock(&(XFS_DQ_TO_QINF(dqp)->qi_pinlock));
|
||||
return;
|
||||
}
|
||||
sv_wait(&(dqp->q_pinwait), PINOD,
|
||||
|
@ -106,7 +106,7 @@ typedef struct xfs_qm {
|
||||
typedef struct xfs_quotainfo {
|
||||
xfs_inode_t *qi_uquotaip; /* user 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 */
|
||||
int qi_dqreclaims; /* a change here indicates
|
||||
a removal in the dqlist */
|
||||
|
Loading…
Reference in New Issue
Block a user