* [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout
@ 2009-10-30 9:09 Christoph Hellwig
2009-11-02 23:20 ` Alex Elder
0 siblings, 1 reply; 2+ messages in thread
From: Christoph Hellwig @ 2009-10-30 9:09 UTC (permalink / raw)
To: xfs
The VM and I/O schedulers now expect us to use WRITE_SYNC_PLUG for synchronous
writeout. Right now I can't see any changes in performance numbers with this,
but we're getting some beating for not using it, and the knowledge defintively
could help the block code to make better decisions.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c
===================================================================
--- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2009-10-24 10:08:36.622254197 +0200
+++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2009-10-24 10:18:27.803006347 +0200
@@ -412,8 +412,9 @@ xfs_end_bio(
STATIC void
xfs_submit_ioend_bio(
- xfs_ioend_t *ioend,
- struct bio *bio)
+ struct writeback_control *wbc,
+ xfs_ioend_t *ioend,
+ struct bio *bio)
{
atomic_inc(&ioend->io_remaining);
bio->bi_private = ioend;
@@ -426,7 +427,8 @@ xfs_submit_ioend_bio(
if (xfs_ioend_new_eof(ioend))
xfs_mark_inode_dirty_sync(XFS_I(ioend->io_inode));
- submit_bio(WRITE, bio);
+ submit_bio(wbc->sync_mode == WB_SYNC_ALL ?
+ WRITE_SYNC_PLUG : WRITE, bio);
ASSERT(!bio_flagged(bio, BIO_EOPNOTSUPP));
bio_put(bio);
}
@@ -505,6 +507,7 @@ static inline int bio_add_buffer(struct
*/
STATIC void
xfs_submit_ioend(
+ struct writeback_control *wbc,
xfs_ioend_t *ioend)
{
xfs_ioend_t *head = ioend;
@@ -533,19 +536,19 @@ xfs_submit_ioend(
retry:
bio = xfs_alloc_ioend_bio(bh);
} else if (bh->b_blocknr != lastblock + 1) {
- xfs_submit_ioend_bio(ioend, bio);
+ xfs_submit_ioend_bio(wbc, ioend, bio);
goto retry;
}
if (bio_add_buffer(bio, bh) != bh->b_size) {
- xfs_submit_ioend_bio(ioend, bio);
+ xfs_submit_ioend_bio(wbc, ioend, bio);
goto retry;
}
lastblock = bh->b_blocknr;
}
if (bio)
- xfs_submit_ioend_bio(ioend, bio);
+ xfs_submit_ioend_bio(wbc, ioend, bio);
xfs_finish_ioend(ioend, 0);
} while ((ioend = next) != NULL);
}
@@ -1198,7 +1201,7 @@ xfs_page_state_convert(
}
if (iohead)
- xfs_submit_ioend(iohead);
+ xfs_submit_ioend(wbc, iohead);
return page_dirty;
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 2+ messages in thread
* RE: [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout
2009-10-30 9:09 [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout Christoph Hellwig
@ 2009-11-02 23:20 ` Alex Elder
0 siblings, 0 replies; 2+ messages in thread
From: Alex Elder @ 2009-11-02 23:20 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: xfs
Christoph Hellwig wrote:
> The VM and I/O schedulers now expect us to use WRITE_SYNC_PLUG for synchronous
> writeout. Right now I can't see any changes in performance numbers with this,
> but we're getting some beating for not using it, and the knowledge defintively
> could help the block code to make better decisions.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
Looks good.
Reviewed-by: Alex Elder <aelder@sgi.com>
> Index: linux-2.6/fs/xfs/linux-2.6/xfs_aops.c
> ===================================================================
> --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_aops.c 2009-10-24 10:08:36.622254197 +0200
> +++ linux-2.6/fs/xfs/linux-2.6/xfs_aops.c 2009-10-24 10:18:27.803006347 +0200
> @@ -412,8 +412,9 @@ xfs_end_bio(
>
> STATIC void
> xfs_submit_ioend_bio(
> - xfs_ioend_t *ioend,
> - struct bio *bio)
> + struct writeback_control *wbc,
> + xfs_ioend_t *ioend,
> + struct bio *bio)
> {
> atomic_inc(&ioend->io_remaining);
> bio->bi_private = ioend;
> @@ -426,7 +427,8 @@ xfs_submit_ioend_bio(
> if (xfs_ioend_new_eof(ioend))
> xfs_mark_inode_dirty_sync(XFS_I(ioend->io_inode));
>
> - submit_bio(WRITE, bio);
> + submit_bio(wbc->sync_mode == WB_SYNC_ALL ?
> + WRITE_SYNC_PLUG : WRITE, bio);
> ASSERT(!bio_flagged(bio, BIO_EOPNOTSUPP));
> bio_put(bio);
> }
> @@ -505,6 +507,7 @@ static inline int bio_add_buffer(struct
> */
> STATIC void
> xfs_submit_ioend(
> + struct writeback_control *wbc,
> xfs_ioend_t *ioend)
> {
> xfs_ioend_t *head = ioend;
> @@ -533,19 +536,19 @@ xfs_submit_ioend(
> retry:
> bio = xfs_alloc_ioend_bio(bh);
> } else if (bh->b_blocknr != lastblock + 1) {
> - xfs_submit_ioend_bio(ioend, bio);
> + xfs_submit_ioend_bio(wbc, ioend, bio);
> goto retry;
> }
>
> if (bio_add_buffer(bio, bh) != bh->b_size) {
> - xfs_submit_ioend_bio(ioend, bio);
> + xfs_submit_ioend_bio(wbc, ioend, bio);
> goto retry;
> }
>
> lastblock = bh->b_blocknr;
> }
> if (bio)
> - xfs_submit_ioend_bio(ioend, bio);
> + xfs_submit_ioend_bio(wbc, ioend, bio);
> xfs_finish_ioend(ioend, 0);
> } while ((ioend = next) != NULL);
> }
> @@ -1198,7 +1201,7 @@ xfs_page_state_convert(
> }
>
> if (iohead)
> - xfs_submit_ioend(iohead);
> + xfs_submit_ioend(wbc, iohead);
>
> return page_dirty;
>
>
> _______________________________________________
> xfs mailing list
> xfs@oss.sgi.com
> http://oss.sgi.com/mailman/listinfo/xfs
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-11-02 23:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-30 9:09 [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout Christoph Hellwig
2009-11-02 23:20 ` Alex Elder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox