From: Andreas Gruenbacher <agruenba@redhat.com> To: cluster-devel@redhat.com, "Darrick J . Wong" <darrick.wong@oracle.com> Cc: "Christoph Hellwig" <hch@lst.de>, "Bob Peterson" <rpeterso@redhat.com>, "Jan Kara" <jack@suse.cz>, "Dave Chinner" <david@fromorbit.com>, "Ross Lagerwall" <ross.lagerwall@citrix.com>, "Mark Syms" <Mark.Syms@citrix.com>, "Edwin Török" <edvin.torok@citrix.com>, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, "Andreas Gruenbacher" <agruenba@redhat.com> Subject: [PATCH v7 1/5] iomap: Clean up __generic_write_end calling Date: Tue, 30 Apr 2019 00:09:30 +0200 [thread overview] Message-ID: <20190429220934.10415-2-agruenba@redhat.com> (raw) In-Reply-To: <20190429220934.10415-1-agruenba@redhat.com> From: Christoph Hellwig <hch@lst.de> Move the call to __generic_write_end into iomap_write_end instead of duplicating it in each of the three branches. This requires open coding the generic_write_end for the buffer_head case. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Reviewed-by: Jan Kara <jack@suse.cz> --- fs/iomap.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/fs/iomap.c b/fs/iomap.c index 97cb9d486a7d..2344c662e6fc 100644 --- a/fs/iomap.c +++ b/fs/iomap.c @@ -738,13 +738,11 @@ __iomap_write_end(struct inode *inode, loff_t pos, unsigned len, * uptodate page as a zero-length write, and force the caller to redo * the whole thing. */ - if (unlikely(copied < len && !PageUptodate(page))) { - copied = 0; - } else { - iomap_set_range_uptodate(page, offset_in_page(pos), len); - iomap_set_page_dirty(page); - } - return __generic_write_end(inode, pos, copied, page); + if (unlikely(copied < len && !PageUptodate(page))) + return 0; + iomap_set_range_uptodate(page, offset_in_page(pos), len); + iomap_set_page_dirty(page); + return copied; } static int @@ -761,7 +759,6 @@ iomap_write_end_inline(struct inode *inode, struct page *page, kunmap_atomic(addr); mark_inode_dirty(inode); - __generic_write_end(inode, pos, copied, page); return copied; } @@ -774,12 +771,13 @@ iomap_write_end(struct inode *inode, loff_t pos, unsigned len, if (iomap->type == IOMAP_INLINE) { ret = iomap_write_end_inline(inode, page, iomap, pos, copied); } else if (iomap->flags & IOMAP_F_BUFFER_HEAD) { - ret = generic_write_end(NULL, inode->i_mapping, pos, len, - copied, page, NULL); + ret = block_write_end(NULL, inode->i_mapping, pos, len, copied, + page, NULL); } else { ret = __iomap_write_end(inode, pos, len, copied, page, iomap); } + ret = __generic_write_end(inode, pos, ret, page); if (iomap->page_done) iomap->page_done(inode, pos, copied, page, iomap); -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: Andreas Gruenbacher <agruenba@redhat.com> To: cluster-devel.redhat.com Subject: [Cluster-devel] [PATCH v7 1/5] iomap: Clean up __generic_write_end calling Date: Tue, 30 Apr 2019 00:09:30 +0200 [thread overview] Message-ID: <20190429220934.10415-2-agruenba@redhat.com> (raw) In-Reply-To: <20190429220934.10415-1-agruenba@redhat.com> From: Christoph Hellwig <hch@lst.de> Move the call to __generic_write_end into iomap_write_end instead of duplicating it in each of the three branches. This requires open coding the generic_write_end for the buffer_head case. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Reviewed-by: Jan Kara <jack@suse.cz> --- fs/iomap.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/fs/iomap.c b/fs/iomap.c index 97cb9d486a7d..2344c662e6fc 100644 --- a/fs/iomap.c +++ b/fs/iomap.c @@ -738,13 +738,11 @@ __iomap_write_end(struct inode *inode, loff_t pos, unsigned len, * uptodate page as a zero-length write, and force the caller to redo * the whole thing. */ - if (unlikely(copied < len && !PageUptodate(page))) { - copied = 0; - } else { - iomap_set_range_uptodate(page, offset_in_page(pos), len); - iomap_set_page_dirty(page); - } - return __generic_write_end(inode, pos, copied, page); + if (unlikely(copied < len && !PageUptodate(page))) + return 0; + iomap_set_range_uptodate(page, offset_in_page(pos), len); + iomap_set_page_dirty(page); + return copied; } static int @@ -761,7 +759,6 @@ iomap_write_end_inline(struct inode *inode, struct page *page, kunmap_atomic(addr); mark_inode_dirty(inode); - __generic_write_end(inode, pos, copied, page); return copied; } @@ -774,12 +771,13 @@ iomap_write_end(struct inode *inode, loff_t pos, unsigned len, if (iomap->type == IOMAP_INLINE) { ret = iomap_write_end_inline(inode, page, iomap, pos, copied); } else if (iomap->flags & IOMAP_F_BUFFER_HEAD) { - ret = generic_write_end(NULL, inode->i_mapping, pos, len, - copied, page, NULL); + ret = block_write_end(NULL, inode->i_mapping, pos, len, copied, + page, NULL); } else { ret = __iomap_write_end(inode, pos, len, copied, page, iomap); } + ret = __generic_write_end(inode, pos, ret, page); if (iomap->page_done) iomap->page_done(inode, pos, copied, page, iomap); -- 2.20.1
next prev parent reply other threads:[~2019-04-29 22:09 UTC|newest] Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-29 22:09 [PATCH v7 0/5] iomap and gfs2 fixes Andreas Gruenbacher 2019-04-29 22:09 ` [Cluster-devel] " Andreas Gruenbacher 2019-04-29 22:09 ` Andreas Gruenbacher [this message] 2019-04-29 22:09 ` [Cluster-devel] [PATCH v7 1/5] iomap: Clean up __generic_write_end calling Andreas Gruenbacher 2019-04-30 15:14 ` Darrick J. Wong 2019-04-30 15:14 ` [Cluster-devel] " Darrick J. Wong 2019-04-29 22:09 ` [PATCH v7 2/5] fs: Turn __generic_write_end into a void function Andreas Gruenbacher 2019-04-29 22:09 ` [Cluster-devel] " Andreas Gruenbacher 2019-04-30 10:29 ` Christoph Hellwig 2019-04-30 10:29 ` [Cluster-devel] " Christoph Hellwig 2019-04-30 15:17 ` Darrick J. Wong 2019-04-30 15:17 ` [Cluster-devel] " Darrick J. Wong 2019-04-29 22:09 ` [PATCH v7 3/5] iomap: Fix use-after-free error in page_done callback Andreas Gruenbacher 2019-04-29 22:09 ` [Cluster-devel] " Andreas Gruenbacher 2019-04-30 15:23 ` Darrick J. Wong 2019-04-30 15:23 ` [Cluster-devel] " Darrick J. Wong 2019-04-29 22:09 ` [PATCH v7 4/5] iomap: Add a page_prepare callback Andreas Gruenbacher 2019-04-29 22:09 ` [Cluster-devel] " Andreas Gruenbacher 2019-04-30 15:26 ` Darrick J. Wong 2019-04-30 15:26 ` [Cluster-devel] " Darrick J. Wong 2019-04-29 22:09 ` [PATCH v7 5/5] gfs2: Fix iomap write page reclaim deadlock Andreas Gruenbacher 2019-04-29 22:09 ` [Cluster-devel] " Andreas Gruenbacher 2019-04-30 15:32 ` Darrick J. Wong 2019-04-30 15:32 ` [Cluster-devel] " Darrick J. Wong 2019-04-30 15:39 ` Andreas Gruenbacher 2019-04-30 15:39 ` [Cluster-devel] " Andreas Gruenbacher 2019-04-30 15:47 ` Darrick J. Wong 2019-04-30 15:47 ` [Cluster-devel] " Darrick J. Wong 2019-04-30 16:15 ` Andreas Grünbacher 2019-04-30 16:15 ` [Cluster-devel] " Andreas Grünbacher 2019-04-30 2:50 ` [PATCH v7 0/5] iomap and gfs2 fixes Darrick J. Wong 2019-04-30 2:50 ` [Cluster-devel] " Darrick J. Wong 2019-04-30 21:21 ` Dave Chinner 2019-04-30 21:21 ` [Cluster-devel] " Dave Chinner 2019-05-01 15:06 ` Darrick J. Wong 2019-05-01 15:06 ` [Cluster-devel] " Darrick J. Wong
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=20190429220934.10415-2-agruenba@redhat.com \ --to=agruenba@redhat.com \ --cc=Mark.Syms@citrix.com \ --cc=cluster-devel@redhat.com \ --cc=darrick.wong@oracle.com \ --cc=david@fromorbit.com \ --cc=edvin.torok@citrix.com \ --cc=hch@lst.de \ --cc=jack@suse.cz \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=ross.lagerwall@citrix.com \ --cc=rpeterso@redhat.com \ /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: linkBe 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.