xfs
[Top] [All Lists]

RE: [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout

To: "Christoph Hellwig" <hch@xxxxxxxxxxxxx>
Subject: RE: [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout
From: "Alex Elder" <aelder@xxxxxxx>
Date: Mon, 2 Nov 2009 17:20:44 -0600
Cc: <xfs@xxxxxxxxxxx>
In-reply-to: <20091030090915.GA23188@xxxxxxxxxxxxx>
Thread-index: AcpZQ3aFAoQDWOTXR0eN2VGoQMCCTwCz5MZw
Thread-topic: [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout
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@xxxxxx>

Looks good.

Reviewed-by: Alex Elder <aelder@xxxxxxx>


> 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@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

<Prev in Thread] Current Thread [Next in Thread>
  • RE: [PATCH] xfs: use WRITE_SYNC_PLUG for synchronous writeout, Alex Elder <=