Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 84443
b: refs/heads/master
c: 64137e5
h: refs/heads/master
i:
  84441: 16ee132
  84439: 6289892
v: v3
  • Loading branch information
Eric Sandeen authored and Lachlan McIlroy committed Feb 7, 2008
1 parent 5732e38 commit 54812bc
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 869b906078720b68711569b68de0acca6b73b675
refs/heads/master: 64137e56d76a5c05aa4411e2f5d7121593dd9478
2 changes: 1 addition & 1 deletion trunk/fs/xfs/xfs_ag.h
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ typedef struct xfs_perag
xfs_agino_t pagi_count; /* number of allocated inodes */
int pagb_count; /* pagb slots in use */
#ifdef __KERNEL__
lock_t pagb_lock; /* lock for pagb_list */
spinlock_t pagb_lock; /* lock for pagb_list */
#endif
xfs_perag_busy_t *pagb_list; /* unstable blocks */
atomic_t pagf_fstrms; /* # of filestreams active in this AG */
Expand Down
17 changes: 7 additions & 10 deletions trunk/fs/xfs/xfs_alloc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2500,10 +2500,9 @@ xfs_alloc_mark_busy(xfs_trans_t *tp,
xfs_mount_t *mp;
xfs_perag_busy_t *bsy;
int n;
SPLDECL(s);

mp = tp->t_mountp;
s = mutex_spinlock(&mp->m_perag[agno].pagb_lock);
spin_lock(&mp->m_perag[agno].pagb_lock);

/* search pagb_list for an open slot */
for (bsy = mp->m_perag[agno].pagb_list, n = 0;
Expand Down Expand Up @@ -2533,7 +2532,7 @@ xfs_alloc_mark_busy(xfs_trans_t *tp,
xfs_trans_set_sync(tp);
}

mutex_spinunlock(&mp->m_perag[agno].pagb_lock, s);
spin_unlock(&mp->m_perag[agno].pagb_lock);
}

void
Expand All @@ -2543,11 +2542,10 @@ xfs_alloc_clear_busy(xfs_trans_t *tp,
{
xfs_mount_t *mp;
xfs_perag_busy_t *list;
SPLDECL(s);

mp = tp->t_mountp;

s = mutex_spinlock(&mp->m_perag[agno].pagb_lock);
spin_lock(&mp->m_perag[agno].pagb_lock);
list = mp->m_perag[agno].pagb_list;

ASSERT(idx < XFS_PAGB_NUM_SLOTS);
Expand All @@ -2559,7 +2557,7 @@ xfs_alloc_clear_busy(xfs_trans_t *tp,
TRACE_UNBUSY("xfs_alloc_clear_busy", "missing", agno, idx, tp);
}

mutex_spinunlock(&mp->m_perag[agno].pagb_lock, s);
spin_unlock(&mp->m_perag[agno].pagb_lock);
}


Expand All @@ -2578,11 +2576,10 @@ xfs_alloc_search_busy(xfs_trans_t *tp,
xfs_agblock_t uend, bend;
xfs_lsn_t lsn;
int cnt;
SPLDECL(s);

mp = tp->t_mountp;

s = mutex_spinlock(&mp->m_perag[agno].pagb_lock);
spin_lock(&mp->m_perag[agno].pagb_lock);
cnt = mp->m_perag[agno].pagb_count;

uend = bno + len - 1;
Expand Down Expand Up @@ -2615,12 +2612,12 @@ xfs_alloc_search_busy(xfs_trans_t *tp,
if (cnt) {
TRACE_BUSYSEARCH("xfs_alloc_search_busy", "found", agno, bno, len, n, tp);
lsn = bsy->busy_tp->t_commit_lsn;
mutex_spinunlock(&mp->m_perag[agno].pagb_lock, s);
spin_unlock(&mp->m_perag[agno].pagb_lock);
xfs_log_force(mp, lsn, XFS_LOG_FORCE|XFS_LOG_SYNC);
} else {
TRACE_BUSYSEARCH("xfs_alloc_search_busy", "not-found", agno, bno, len, n, tp);
n = -1;
mutex_spinunlock(&mp->m_perag[agno].pagb_lock, s);
spin_unlock(&mp->m_perag[agno].pagb_lock);
}

return n;
Expand Down

0 comments on commit 54812bc

Please sign in to comment.