Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 269869
b: refs/heads/master
c: 61551f1
h: refs/heads/master
i:
  269867: 801f3c7
v: v3
  • Loading branch information
Christoph Hellwig authored and Alex Elder committed Oct 12, 2011
1 parent e5f4130 commit 4ebd027
Show file tree
Hide file tree
Showing 13 changed files with 31 additions and 40 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: 5a8ee6bafdd0ab8555adceac8b2cec539a552a1f
refs/heads/master: 61551f1ee536289084a4a8f1c4f187e2f371c440
2 changes: 1 addition & 1 deletion trunk/fs/xfs/xfs_attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -2189,7 +2189,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)
bp = xfs_incore(mp->m_ddev_targp, dblkno, blkcnt, XBF_TRYLOCK);
if (bp) {
XFS_BUF_STALE(bp);
XFS_BUF_UNDELAYWRITE(bp);
xfs_buf_delwri_dequeue(bp);
xfs_buf_relse(bp);
bp = NULL;
}
Expand Down
21 changes: 3 additions & 18 deletions trunk/fs/xfs/xfs_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@

static kmem_zone_t *xfs_buf_zone;
STATIC int xfsbufd(void *);
STATIC void xfs_buf_delwri_queue(xfs_buf_t *);

static struct workqueue_struct *xfslogd_workqueue;
struct workqueue_struct *xfsdatad_workqueue;
Expand Down Expand Up @@ -937,9 +936,6 @@ void
xfs_buf_unlock(
struct xfs_buf *bp)
{
if ((bp->b_flags & (XBF_DELWRI|_XBF_DELWRI_Q)) == XBF_DELWRI)
xfs_buf_delwri_queue(bp);

XB_CLEAR_OWNER(bp);
up(&bp->b_sema);

Expand Down Expand Up @@ -1036,17 +1032,6 @@ xfs_bwrite(
return error;
}

void
xfs_bdwrite(
void *mp,
struct xfs_buf *bp)
{
trace_xfs_buf_bdwrite(bp, _RET_IP_);

xfs_buf_delwri_queue(bp);
xfs_buf_relse(bp);
}

/*
* Called when we want to stop a buffer from getting written or read.
* We attach the EIO error, muck with its flags, and call xfs_buf_ioend
Expand All @@ -1069,7 +1054,7 @@ xfs_bioerror(
* We're calling xfs_buf_ioend, so delete XBF_DONE flag.
*/
XFS_BUF_UNREAD(bp);
XFS_BUF_UNDELAYWRITE(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_UNDONE(bp);
XFS_BUF_STALE(bp);

Expand Down Expand Up @@ -1098,7 +1083,7 @@ xfs_bioerror_relse(
* change that interface.
*/
XFS_BUF_UNREAD(bp);
XFS_BUF_UNDELAYWRITE(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_DONE(bp);
XFS_BUF_STALE(bp);
bp->b_iodone = NULL;
Expand Down Expand Up @@ -1555,7 +1540,7 @@ xfs_alloc_buftarg(
/*
* Delayed write buffer handling
*/
STATIC void
void
xfs_buf_delwri_queue(
xfs_buf_t *bp)
{
Expand Down
8 changes: 3 additions & 5 deletions trunk/fs/xfs/xfs_buf.h
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,6 @@ extern void xfs_buf_unlock(xfs_buf_t *);

/* Buffer Read and Write Routines */
extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp);
extern void xfs_bdwrite(void *mp, xfs_buf_t *bp);

extern void xfsbdstrat(struct xfs_mount *, struct xfs_buf *);
extern int xfs_bdstrat_cb(struct xfs_buf *);
Expand All @@ -221,8 +220,9 @@ static inline int xfs_buf_geterror(xfs_buf_t *bp)
extern xfs_caddr_t xfs_buf_offset(xfs_buf_t *, size_t);

/* Delayed Write Buffer Routines */
extern void xfs_buf_delwri_dequeue(xfs_buf_t *);
extern void xfs_buf_delwri_promote(xfs_buf_t *);
extern void xfs_buf_delwri_queue(struct xfs_buf *);
extern void xfs_buf_delwri_dequeue(struct xfs_buf *);
extern void xfs_buf_delwri_promote(struct xfs_buf *);

/* Buffer Daemon Setup Routines */
extern int xfs_buf_init(void);
Expand Down Expand Up @@ -251,8 +251,6 @@ void xfs_buf_stale(struct xfs_buf *bp);
XFS_BUF_DONE(bp); \
} while (0)

#define XFS_BUF_DELAYWRITE(bp) ((bp)->b_flags |= XBF_DELWRI)
#define XFS_BUF_UNDELAYWRITE(bp) xfs_buf_delwri_dequeue(bp)
#define XFS_BUF_ISDELAYWRITE(bp) ((bp)->b_flags & XBF_DELWRI)

#define XFS_BUF_DONE(bp) ((bp)->b_flags |= XBF_DONE)
Expand Down
4 changes: 2 additions & 2 deletions trunk/fs/xfs/xfs_buf_item.c
Original file line number Diff line number Diff line change
Expand Up @@ -992,7 +992,7 @@ xfs_buf_iodone_callbacks(
xfs_buf_ioerror(bp, 0); /* errno of 0 unsets the flag */

if (!XFS_BUF_ISSTALE(bp)) {
XFS_BUF_DELAYWRITE(bp);
xfs_buf_delwri_queue(bp);
XFS_BUF_DONE(bp);
}
ASSERT(bp->b_iodone != NULL);
Expand All @@ -1007,7 +1007,7 @@ xfs_buf_iodone_callbacks(
*/
XFS_BUF_STALE(bp);
XFS_BUF_DONE(bp);
XFS_BUF_UNDELAYWRITE(bp);
xfs_buf_delwri_dequeue(bp);

trace_xfs_buf_error_relse(bp, _RET_IP_);

Expand Down
6 changes: 4 additions & 2 deletions trunk/fs/xfs/xfs_dquot.c
Original file line number Diff line number Diff line change
Expand Up @@ -1243,8 +1243,10 @@ xfs_qm_dqflush(

if (flags & SYNC_WAIT)
error = xfs_bwrite(mp, bp);
else
xfs_bdwrite(mp, bp);
else {
xfs_buf_delwri_queue(bp);
xfs_buf_relse(bp);
}

trace_xfs_dqflush_done(dqp);

Expand Down
6 changes: 4 additions & 2 deletions trunk/fs/xfs/xfs_inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -2598,8 +2598,10 @@ xfs_iflush(

if (flags & SYNC_WAIT)
error = xfs_bwrite(mp, bp);
else
xfs_bdwrite(mp, bp);
else {
xfs_buf_delwri_queue(bp);
xfs_buf_relse(bp);
}
return error;

corrupt_out:
Expand Down
9 changes: 6 additions & 3 deletions trunk/fs/xfs/xfs_log_recover.c
Original file line number Diff line number Diff line change
Expand Up @@ -2176,7 +2176,8 @@ xlog_recover_buffer_pass2(
} else {
ASSERT(bp->b_target->bt_mount == mp);
bp->b_iodone = xlog_recover_iodone;
xfs_bdwrite(mp, bp);
xfs_buf_delwri_queue(bp);
xfs_buf_relse(bp);
}

return (error);
Expand Down Expand Up @@ -2439,7 +2440,8 @@ xlog_recover_inode_pass2(
write_inode_buffer:
ASSERT(bp->b_target->bt_mount == mp);
bp->b_iodone = xlog_recover_iodone;
xfs_bdwrite(mp, bp);
xfs_buf_delwri_queue(bp);
xfs_buf_relse(bp);
error:
if (need_free)
kmem_free(in_f);
Expand Down Expand Up @@ -2561,7 +2563,8 @@ xlog_recover_dquot_pass2(
ASSERT(dq_f->qlf_size == 2);
ASSERT(bp->b_target->bt_mount == mp);
bp->b_iodone = xlog_recover_iodone;
xfs_bdwrite(mp, bp);
xfs_buf_delwri_queue(bp);
xfs_buf_relse(bp);

return (0);
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/xfs/xfs_mount.c
Original file line number Diff line number Diff line change
Expand Up @@ -1612,7 +1612,7 @@ xfs_unmountfs_writesb(xfs_mount_t *mp)

XFS_BUF_UNDONE(sbp);
XFS_BUF_UNREAD(sbp);
XFS_BUF_UNDELAYWRITE(sbp);
xfs_buf_delwri_dequeue(sbp);
XFS_BUF_WRITE(sbp);
XFS_BUF_UNASYNC(sbp);
ASSERT(sbp->b_target == mp->m_ddev_targp);
Expand Down
3 changes: 2 additions & 1 deletion trunk/fs/xfs/xfs_qm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1296,7 +1296,8 @@ xfs_qm_dqiter_bufs(
break;

xfs_qm_reset_dqcounts(mp, bp, firstid, type);
xfs_bdwrite(mp, bp);
xfs_buf_delwri_queue(bp);
xfs_buf_relse(bp);
/*
* goto the next block.
*/
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/xfs/xfs_rw.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ xfs_read_buf(
}
if (bp) {
XFS_BUF_UNDONE(bp);
XFS_BUF_UNDELAYWRITE(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_STALE(bp);
/*
* brelse clears B_ERROR and b_error
Expand Down
1 change: 0 additions & 1 deletion trunk/fs/xfs/xfs_trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,6 @@ DEFINE_BUF_EVENT(xfs_buf_rele);
DEFINE_BUF_EVENT(xfs_buf_iodone);
DEFINE_BUF_EVENT(xfs_buf_iorequest);
DEFINE_BUF_EVENT(xfs_buf_bawrite);
DEFINE_BUF_EVENT(xfs_buf_bdwrite);
DEFINE_BUF_EVENT(xfs_buf_lock);
DEFINE_BUF_EVENT(xfs_buf_lock_done);
DEFINE_BUF_EVENT(xfs_buf_trylock);
Expand Down
5 changes: 3 additions & 2 deletions trunk/fs/xfs/xfs_trans_buf.c
Original file line number Diff line number Diff line change
Expand Up @@ -643,13 +643,14 @@ xfs_trans_log_buf(xfs_trans_t *tp,
* inside the b_bdstrat callback so that this won't get written to
* disk.
*/
XFS_BUF_DELAYWRITE(bp);
XFS_BUF_DONE(bp);

ASSERT(atomic_read(&bip->bli_refcount) > 0);
bp->b_iodone = xfs_buf_iodone_callbacks;
bip->bli_item.li_cb = xfs_buf_iodone;

xfs_buf_delwri_queue(bp);

trace_xfs_trans_log_buf(bip);

/*
Expand Down Expand Up @@ -738,7 +739,7 @@ xfs_trans_binval(
* We set the stale bit in the buffer as well since we're getting
* rid of it.
*/
XFS_BUF_UNDELAYWRITE(bp);
xfs_buf_delwri_dequeue(bp);
XFS_BUF_STALE(bp);
bip->bli_flags |= XFS_BLI_STALE;
bip->bli_flags &= ~(XFS_BLI_INODE_BUF | XFS_BLI_LOGGED | XFS_BLI_DIRTY);
Expand Down

0 comments on commit 4ebd027

Please sign in to comment.