From: Jan Kara <jack@suse.cz> To: LKML <linux-kernel@vger.kernel.org> Cc: hch@infradead.org, Jan Kara <jack@suse.cz>, ocfs2-devel@oss.oracle.com, Joel Becker <joel.becker@oracle.com> Subject: [PATCH 05/17] ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock Date: Wed, 19 Aug 2009 18:04:32 +0200 [thread overview] Message-ID: <1250697884-22288-6-git-send-email-jack@suse.cz> (raw) In-Reply-To: <1250697884-22288-1-git-send-email-jack@suse.cz> Use the new helper. We have to submit data pages ourselves in case of O_SYNC write because __generic_file_aio_write does not do it for us. OCFS2 developpers might think about moving the sync out of i_mutex which seems to be easily possible but that's out of scope of this patch. CC: ocfs2-devel@oss.oracle.com CC: Joel Becker <joel.becker@oracle.com> Signed-off-by: Jan Kara <jack@suse.cz> --- fs/ocfs2/file.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 62442e4..1c71f0a 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -1870,8 +1870,7 @@ relock: goto out_dio; } } else { - written = generic_file_aio_write_nolock(iocb, iov, nr_segs, - *ppos); + written = __generic_file_aio_write(iocb, iov, nr_segs, ppos); } out_dio: @@ -1879,18 +1878,21 @@ out_dio: BUG_ON(ret == -EIOCBQUEUED && !(file->f_flags & O_DIRECT)); if ((file->f_flags & O_SYNC && !direct_io) || IS_SYNC(inode)) { - /* - * The generic write paths have handled getting data - * to disk, but since we don't make use of the dirty - * inode list, a manual journal commit is necessary - * here. - */ - if (old_size != i_size_read(inode) || - old_clusters != OCFS2_I(inode)->ip_clusters) { + ret = filemap_fdatawrite_range(file->f_mapping, pos, + pos + count - 1); + if (ret < 0) + written = ret; + + if (!ret && (old_size != i_size_read(inode) || + old_clusters != OCFS2_I(inode)->ip_clusters)) { ret = jbd2_journal_force_commit(osb->journal->j_journal); if (ret < 0) written = ret; } + + if (!ret) + ret = filemap_fdatawait_range(file->f_mapping, pos, + pos + count - 1); } /* -- 1.6.0.2
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz> To: LKML <linux-kernel@vger.kernel.org> Cc: hch@infradead.org, Jan Kara <jack@suse.cz>, ocfs2-devel@oss.oracle.com, Joel Becker <joel.becker@oracle.com> Subject: [Ocfs2-devel] [PATCH 05/17] ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock Date: Wed, 19 Aug 2009 18:04:32 +0200 [thread overview] Message-ID: <1250697884-22288-6-git-send-email-jack@suse.cz> (raw) In-Reply-To: <1250697884-22288-1-git-send-email-jack@suse.cz> Use the new helper. We have to submit data pages ourselves in case of O_SYNC write because __generic_file_aio_write does not do it for us. OCFS2 developpers might think about moving the sync out of i_mutex which seems to be easily possible but that's out of scope of this patch. CC: ocfs2-devel at oss.oracle.com CC: Joel Becker <joel.becker@oracle.com> Signed-off-by: Jan Kara <jack@suse.cz> --- fs/ocfs2/file.c | 22 ++++++++++++---------- 1 files changed, 12 insertions(+), 10 deletions(-) diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 62442e4..1c71f0a 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -1870,8 +1870,7 @@ relock: goto out_dio; } } else { - written = generic_file_aio_write_nolock(iocb, iov, nr_segs, - *ppos); + written = __generic_file_aio_write(iocb, iov, nr_segs, ppos); } out_dio: @@ -1879,18 +1878,21 @@ out_dio: BUG_ON(ret == -EIOCBQUEUED && !(file->f_flags & O_DIRECT)); if ((file->f_flags & O_SYNC && !direct_io) || IS_SYNC(inode)) { - /* - * The generic write paths have handled getting data - * to disk, but since we don't make use of the dirty - * inode list, a manual journal commit is necessary - * here. - */ - if (old_size != i_size_read(inode) || - old_clusters != OCFS2_I(inode)->ip_clusters) { + ret = filemap_fdatawrite_range(file->f_mapping, pos, + pos + count - 1); + if (ret < 0) + written = ret; + + if (!ret && (old_size != i_size_read(inode) || + old_clusters != OCFS2_I(inode)->ip_clusters)) { ret = jbd2_journal_force_commit(osb->journal->j_journal); if (ret < 0) written = ret; } + + if (!ret) + ret = filemap_fdatawait_range(file->f_mapping, pos, + pos + count - 1); } /* -- 1.6.0.2
next prev parent reply other threads:[~2009-08-19 16:05 UTC|newest] Thread overview: 144+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-08-19 16:04 [PATCH 0/17] Make O_SYNC handling use standard syncing path Jan Kara 2009-08-19 16:04 ` [PATCH 01/17] vfs: Introduce filemap_fdatawait_range Jan Kara 2009-08-19 16:10 ` Christoph Hellwig 2009-08-19 16:04 ` [PATCH 02/17] vfs: Export __generic_file_aio_write() and add some comments Jan Kara 2009-08-19 16:04 ` [Ocfs2-devel] " Jan Kara 2009-08-19 16:11 ` Christoph Hellwig 2009-08-19 16:11 ` [Ocfs2-devel] " Christoph Hellwig 2009-08-20 12:04 ` Jan Kara 2009-08-20 12:04 ` [Ocfs2-devel] " Jan Kara 2009-08-19 20:22 ` Evgeniy Polyakov 2009-08-19 20:22 ` [Ocfs2-devel] " Evgeniy Polyakov 2009-08-20 12:31 ` Jan Kara 2009-08-20 12:31 ` [Ocfs2-devel] " Jan Kara 2009-08-20 13:30 ` Evgeniy Polyakov 2009-08-20 13:30 ` [Ocfs2-devel] " Evgeniy Polyakov 2009-08-20 13:52 ` Jan Kara 2009-08-20 13:52 ` [Ocfs2-devel] " Jan Kara 2009-08-20 13:58 ` Evgeniy Polyakov 2009-08-20 13:58 ` [Ocfs2-devel] " Evgeniy Polyakov 2009-08-19 16:04 ` [PATCH 03/17] vfs: Remove syncing from generic_file_direct_write() and generic_file_buffered_write() Jan Kara 2009-08-19 16:04 ` [Ocfs2-devel] " Jan Kara 2009-08-19 16:04 ` Jan Kara 2009-08-19 16:18 ` Christoph Hellwig 2009-08-19 16:18 ` [Ocfs2-devel] " Christoph Hellwig 2009-08-19 16:18 ` Christoph Hellwig 2009-08-20 13:31 ` Jan Kara 2009-08-20 13:31 ` [Ocfs2-devel] " Jan Kara 2009-08-20 13:31 ` Jan Kara 2009-08-19 16:04 ` [PATCH 04/17] pohmelfs: Use __generic_file_aio_write instead of generic_file_aio_write_nolock Jan Kara 2009-08-19 16:04 ` Jan Kara [this message] 2009-08-19 16:04 ` [Ocfs2-devel] [PATCH 05/17] ocfs2: " Jan Kara 2009-08-19 16:04 ` [PATCH 06/17] vfs: Remove sync_page_range_nolock Jan Kara 2009-08-19 16:21 ` Christoph Hellwig 2009-08-19 16:04 ` [PATCH 07/17] vfs: Introduce new helpers for syncing after writing to O_SYNC file or IS_SYNC inode Jan Kara 2009-08-19 16:04 ` [Ocfs2-devel] " Jan Kara 2009-08-19 16:04 ` Jan Kara 2009-08-19 16:26 ` Christoph Hellwig 2009-08-19 16:26 ` [Ocfs2-devel] " Christoph Hellwig 2009-08-19 16:26 ` Christoph Hellwig 2009-08-20 12:15 ` Jan Kara 2009-08-20 12:15 ` [Ocfs2-devel] " Jan Kara 2009-08-20 12:15 ` Jan Kara 2009-08-20 16:27 ` Christoph Hellwig 2009-08-20 16:27 ` [Ocfs2-devel] " Christoph Hellwig 2009-08-20 16:27 ` Christoph Hellwig 2009-08-21 15:23 ` Jan Kara 2009-08-21 15:23 ` [Ocfs2-devel] " Jan Kara 2009-08-21 15:23 ` Jan Kara 2009-08-21 15:32 ` Christoph Hellwig 2009-08-21 15:32 ` [Ocfs2-devel] " Christoph Hellwig 2009-08-21 15:32 ` Christoph Hellwig 2009-08-21 15:48 ` Jan Kara 2009-08-21 15:48 ` [Ocfs2-devel] " Jan Kara 2009-08-21 15:48 ` Jan Kara 2009-08-26 18:22 ` Christoph Hellwig 2009-08-26 18:22 ` [Ocfs2-devel] " Christoph Hellwig 2009-08-26 18:22 ` Christoph Hellwig 2009-08-27 0:04 ` Christoph Hellwig 2009-08-27 0:04 ` [Ocfs2-devel] " Christoph Hellwig 2009-08-27 0:04 ` Christoph Hellwig 2009-08-19 16:04 ` [PATCH 08/17] ext2: Update comment about generic_osync_inode Jan Kara 2009-08-19 16:04 ` [PATCH 09/17] ext3: Remove syncing logic from ext3_file_write Jan Kara 2009-08-19 16:04 ` [PATCH 10/17] ext4: Remove syncing logic from ext4_file_write Jan Kara 2009-08-19 16:04 ` Jan Kara 2009-08-19 16:04 ` [PATCH 11/17] fat: Opencode sync_page_range_nolock() Jan Kara 2009-08-19 16:04 ` [PATCH 12/17] ntfs: Use new syncing helpers and update comments Jan Kara 2009-08-19 16:04 ` [PATCH 13/17] ocfs2: Update syncing after splicing to match generic version Jan Kara 2009-08-19 16:04 ` [Ocfs2-devel] " Jan Kara 2009-08-21 1:36 ` Joel Becker 2009-08-21 1:36 ` Joel Becker 2009-08-21 14:30 ` Jan Kara 2009-08-21 14:30 ` Jan Kara 2009-08-19 16:04 ` [PATCH 14/17] xfs: Use new syncing helper Jan Kara 2009-08-19 16:04 ` Jan Kara 2009-08-19 16:33 ` Christoph Hellwig 2009-08-19 16:33 ` Christoph Hellwig 2009-08-20 12:22 ` Jan Kara 2009-08-20 12:22 ` Jan Kara 2009-08-19 16:04 ` [PATCH 15/17] pohmelfs: " Jan Kara 2009-08-19 16:04 ` [PATCH 16/17] nfs: Remove reference to generic_osync_inode from a comment Jan Kara 2009-08-19 16:04 ` [PATCH 17/17] vfs: Remove generic_osync_inode() and sync_page_range() Jan Kara 2009-08-20 22:12 ` O_DIRECT and barriers Christoph Hellwig 2009-08-21 11:40 ` Jens Axboe 2009-08-21 13:54 ` Jamie Lokier 2009-08-21 14:26 ` Christoph Hellwig 2009-08-21 15:24 ` Jamie Lokier 2009-08-21 17:45 ` Christoph Hellwig 2009-08-21 19:18 ` Ric Wheeler 2009-08-22 0:50 ` Jamie Lokier 2009-08-22 2:19 ` Theodore Tso 2009-08-22 2:31 ` Theodore Tso 2009-08-24 2:34 ` Christoph Hellwig 2009-08-27 14:34 ` Jamie Lokier 2009-08-27 17:10 ` adding proper O_SYNC/O_DSYNC, was " Christoph Hellwig 2009-08-27 17:24 ` Ulrich Drepper 2009-08-27 17:24 ` Ulrich Drepper 2009-08-28 15:46 ` Christoph Hellwig 2009-08-28 16:06 ` Ulrich Drepper 2009-08-28 16:06 ` Ulrich Drepper 2009-08-28 16:17 ` Christoph Hellwig 2009-08-28 16:33 ` Ulrich Drepper 2009-08-28 16:33 ` Ulrich Drepper 2009-08-28 16:41 ` Christoph Hellwig 2009-08-28 20:51 ` Ulrich Drepper 2009-08-28 20:51 ` Ulrich Drepper 2009-08-28 21:08 ` Christoph Hellwig 2009-08-28 21:16 ` Trond Myklebust 2009-08-28 21:29 ` Christoph Hellwig 2009-08-28 21:43 ` Trond Myklebust 2009-08-28 22:39 ` Christoph Hellwig 2009-08-30 16:44 ` Jamie Lokier 2009-08-28 16:46 ` Jamie Lokier 2009-08-29 0:59 ` Jamie Lokier 2009-08-28 16:44 ` Jamie Lokier 2009-08-28 16:50 ` Jamie Lokier 2009-08-28 21:08 ` Ulrich Drepper 2009-08-28 21:08 ` Ulrich Drepper 2009-08-30 16:58 ` Jamie Lokier 2009-08-30 17:48 ` Jamie Lokier 2009-08-28 23:06 ` Jamie Lokier 2009-08-28 23:46 ` Christoph Hellwig 2009-08-21 22:08 ` Theodore Tso 2009-08-21 22:38 ` Joel Becker 2009-08-21 22:45 ` Joel Becker 2009-08-22 2:11 ` Theodore Tso 2009-08-24 2:42 ` Christoph Hellwig 2009-08-24 2:37 ` Christoph Hellwig 2009-08-24 2:37 ` Christoph Hellwig 2009-08-21 22:45 ` Joel Becker 2009-08-22 0:56 ` Jamie Lokier 2009-08-22 2:06 ` Theodore Tso 2009-08-26 6:34 ` Dave Chinner 2009-08-26 6:34 ` Dave Chinner 2009-08-26 15:01 ` Jamie Lokier 2009-08-26 18:47 ` Theodore Tso 2009-08-27 14:50 ` Jamie Lokier 2009-08-21 14:20 ` Christoph Hellwig 2009-08-21 15:06 ` James Bottomley 2009-08-21 15:23 ` Christoph Hellwig 2009-08-21 16:59 [PATCH 01/17] vfs: Introduce filemap_fdatawait_range Jan Kara 2009-08-21 16:59 ` [PATCH 05/17] ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock Jan Kara 2009-08-21 17:23 [PATCH 0/17] Make O_SYNC handling use standard syncing path (Version 2) Jan Kara 2009-08-21 17:23 ` [PATCH 05/17] ocfs2: Use __generic_file_aio_write instead of generic_file_aio_write_nolock Jan Kara 2009-08-21 17:23 ` Jan Kara 2009-08-25 18:58 ` Joel Becker 2009-08-25 18:58 ` Joel Becker
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=1250697884-22288-6-git-send-email-jack@suse.cz \ --to=jack@suse.cz \ --cc=hch@infradead.org \ --cc=joel.becker@oracle.com \ --cc=linux-kernel@vger.kernel.org \ --cc=ocfs2-devel@oss.oracle.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.