Commit 49698a6b authored by Glen Overby's avatar Glen Overby Committed by Stephen Lord

[XFS] Ensure that when we unlock a log item when there is someone waiting

for log space, we give at least one thread a chance to flush
metadata and free more log space.

SGI Modid: 2.5.x-xfs:slinx:149321a6
parent b38a168c
......@@ -3003,9 +3003,7 @@ xfs_iflush(
* see if other inodes can be gathered into this write
*/
#ifdef DEBUG
ip->i_chash->chl_buf = bp; /* inode clustering debug */
#endif
ip->i_chash->chl_buf = bp;
ch = XFS_CHASH(mp, ip->i_blkno);
s = mutex_spinlock(&ch->ch_lock);
......
......@@ -192,9 +192,7 @@ typedef struct xfs_chashlist {
struct xfs_inode *chl_ip;
xfs_daddr_t chl_blkno; /* starting block number of
* the cluster */
#ifdef DEBUG
struct xfs_buf *chl_buf; /* debug: the inode buffer */
#endif
struct xfs_buf *chl_buf; /* the inode buffer */
} xfs_chashlist_t;
typedef struct xfs_chash {
......
......@@ -794,8 +794,9 @@ xfs_log_move_tail(xfs_mount_t *mp,
do {
ASSERT(tic->t_flags & XLOG_TIC_PERM_RESERV);
if (free_bytes < tic->t_unit_res)
if (free_bytes < tic->t_unit_res && tail_lsn != 1)
break;
tail_lsn = 0;
free_bytes -= tic->t_unit_res;
sv_signal(&tic->t_sema);
tic = tic->t_next;
......@@ -814,8 +815,9 @@ xfs_log_move_tail(xfs_mount_t *mp,
need_bytes = tic->t_unit_res*tic->t_cnt;
else
need_bytes = tic->t_unit_res;
if (free_bytes < need_bytes)
if (free_bytes < need_bytes && tail_lsn != 1)
break;
tail_lsn = 0;
free_bytes -= need_bytes;
sv_signal(&tic->t_sema);
tic = tic->t_next;
......
......@@ -4883,13 +4883,8 @@ xfsidbg_xchashlist(xfs_chashlist_t *chl)
xfs_inode_t *ip;
while (chl != NULL) {
#ifdef DEBUG
kdb_printf("hashlist inode 0x%p blkno %Ld buf 0x%p",
chl->chl_ip, chl->chl_blkno, chl->chl_buf);
#else
kdb_printf("hashlist inode 0x%p blkno %lld",
chl->chl_ip, (long long) chl->chl_blkno);
#endif
kdb_printf("hashlist inode 0x%p blkno %lld buf 0x%p",
chl->chl_ip, (long long) chl->chl_blkno, chl->chl_buf);
kdb_printf("\n");
......
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