From: Jan Kara <jack@suse.cz>
To: Roman Pen <r.peniaev@gmail.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
Jens Axboe <axboe@kernel.dk>
Subject: Re: [PATCH 1/1] fs/mpage.c: forgotten WRITE_SYNC in case of data integrity write
Date: Thu, 13 Mar 2014 21:21:52 +0100 [thread overview]
Message-ID: <20140313202152.GC504@quack.suse.cz> (raw)
In-Reply-To: <1392519268-29991-1-git-send-email-r.peniaev@gmail.com>
On Sun 16-02-14 11:54:28, Roman Pen wrote:
> In case of wbc->sync_mode == WB_SYNC_ALL we need to do data integrity write,
> thus mark request as WRITE_SYNC.
The patch looks good to me and also makes generic mpage code more in sync
with what e.g. XFS or ext4 do in their writepage functions. You can add:
Reviewed-by: Jan Kara <jack@suse.cz>
Honza
> Signed-off-by: Roman Pen <r.peniaev@gmail.com>
> CC: Alexander Viro <viro@zeniv.linux.org.uk>
> CC: linux-fsdevel@vger.kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
> fs/mpage.c | 23 +++++++++++++++--------
> 1 file changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/fs/mpage.c b/fs/mpage.c
> index 4979ffa..4e0af5a 100644
> --- a/fs/mpage.c
> +++ b/fs/mpage.c
> @@ -462,6 +462,7 @@ static int __mpage_writepage(struct page *page, struct writeback_control *wbc,
> struct buffer_head map_bh;
> loff_t i_size = i_size_read(inode);
> int ret = 0;
> + int wr = (wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE);
>
> if (page_has_buffers(page)) {
> struct buffer_head *head = page_buffers(page);
> @@ -570,7 +571,7 @@ page_is_mapped:
> * This page will go to BIO. Do we need to send this BIO off first?
> */
> if (bio && mpd->last_block_in_bio != blocks[0] - 1)
> - bio = mpage_bio_submit(WRITE, bio);
> + bio = mpage_bio_submit(wr, bio);
>
> alloc_new:
> if (bio == NULL) {
> @@ -587,7 +588,7 @@ alloc_new:
> */
> length = first_unmapped << blkbits;
> if (bio_add_page(bio, page, length, 0) < length) {
> - bio = mpage_bio_submit(WRITE, bio);
> + bio = mpage_bio_submit(wr, bio);
> goto alloc_new;
> }
>
> @@ -620,7 +621,7 @@ alloc_new:
> set_page_writeback(page);
> unlock_page(page);
> if (boundary || (first_unmapped != blocks_per_page)) {
> - bio = mpage_bio_submit(WRITE, bio);
> + bio = mpage_bio_submit(wr, bio);
> if (boundary_block) {
> write_boundary_block(boundary_bdev,
> boundary_block, 1 << blkbits);
> @@ -632,7 +633,7 @@ alloc_new:
>
> confused:
> if (bio)
> - bio = mpage_bio_submit(WRITE, bio);
> + bio = mpage_bio_submit(wr, bio);
>
> if (mpd->use_writepage) {
> ret = mapping->a_ops->writepage(page, wbc);
> @@ -688,8 +689,11 @@ mpage_writepages(struct address_space *mapping,
> };
>
> ret = write_cache_pages(mapping, wbc, __mpage_writepage, &mpd);
> - if (mpd.bio)
> - mpage_bio_submit(WRITE, mpd.bio);
> + if (mpd.bio) {
> + int wr = (wbc->sync_mode == WB_SYNC_ALL ?
> + WRITE_SYNC : WRITE);
> + mpage_bio_submit(wr, mpd.bio);
> + }
> }
> blk_finish_plug(&plug);
> return ret;
> @@ -706,8 +710,11 @@ int mpage_writepage(struct page *page, get_block_t get_block,
> .use_writepage = 0,
> };
> int ret = __mpage_writepage(page, wbc, &mpd);
> - if (mpd.bio)
> - mpage_bio_submit(WRITE, mpd.bio);
> + if (mpd.bio) {
> + int wr = (wbc->sync_mode == WB_SYNC_ALL ?
> + WRITE_SYNC : WRITE);
> + mpage_bio_submit(wr, mpd.bio);
> + }
> return ret;
> }
> EXPORT_SYMBOL(mpage_writepage);
> --
> 1.8.5.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR
prev parent reply other threads:[~2014-03-13 20:21 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-16 2:54 [PATCH 1/1] fs/mpage.c: forgotten WRITE_SYNC in case of data integrity write Roman Pen
2014-02-18 23:59 ` Andrew Morton
2014-02-19 1:38 ` Roman Peniaev
2014-03-12 14:29 ` Roman Peniaev
2014-03-13 20:01 ` Jan Kara
2014-03-13 21:34 ` Andrew Morton
2014-03-14 13:07 ` Tejun Heo
2014-03-14 14:07 ` Roman Peniaev
2014-03-14 14:11 ` Tejun Heo
2014-03-14 14:15 ` Jan Kara
2014-03-14 14:23 ` Roman Peniaev
2014-03-14 14:52 ` Jan Kara
2014-03-14 14:54 ` Tejun Heo
2014-03-14 15:08 ` Jan Kara
2014-03-15 9:09 ` Christoph Hellwig
2014-03-14 14:17 ` Roman Peniaev
2014-03-14 14:20 ` Tejun Heo
2014-03-14 14:29 ` Roman Peniaev
2014-03-14 15:36 ` Roman Peniaev
2014-03-13 20:21 ` Jan Kara [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140313202152.GC504@quack.suse.cz \
--to=jack@suse.cz \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=r.peniaev@gmail.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.