aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_buf.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2011-08-23 08:28:06 +0000
committerAlex Elder <aelder@sgi.com>2011-10-11 21:14:59 -0500
commit61551f1ee536289084a4a8f1c4f187e2f371c440 (patch)
treeb160fd8779bafb6ec8e99f928bcb3e222a91817e /fs/xfs/xfs_buf.c
parent5a8ee6bafdd0ab8555adceac8b2cec539a552a1f (diff)
downloadkernel_samsung_smdk4412-61551f1ee536289084a4a8f1c4f187e2f371c440.zip
kernel_samsung_smdk4412-61551f1ee536289084a4a8f1c4f187e2f371c440.tar.gz
kernel_samsung_smdk4412-61551f1ee536289084a4a8f1c4f187e2f371c440.tar.bz2
xfs: call xfs_buf_delwri_queue directly
Unify the ways we add buffers to the delwri queue by always calling xfs_buf_delwri_queue directly. The xfs_bdwrite functions is removed and opencoded in its callers, and the two places setting XBF_DELWRI while a buffer is locked and expecting xfs_buf_unlock to pick it up are converted to call xfs_buf_delwri_queue directly, too. Also replace the XFS_BUF_UNDELAYWRITE macro with direct calls to xfs_buf_delwri_dequeue to make the explicit queuing/dequeuing more obvious. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_buf.c')
-rw-r--r--fs/xfs/xfs_buf.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index 86c0945..309eca7 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -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;
@@ -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);
@@ -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
@@ -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);
@@ -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;
@@ -1555,7 +1540,7 @@ error:
/*
* Delayed write buffer handling
*/
-STATIC void
+void
xfs_buf_delwri_queue(
xfs_buf_t *bp)
{