Thread (4 messages) 4 messages, 3 authors, 2017-05-02

Re: [PATCH] jbd2: Fix dbench4 performance regression for 'nobarrier' mounts

From: Jan Kara <jack@suse.cz>
Date: 2017-05-02 09:36:57
Also in: stable

On Fri 28-04-17 08:03:24, Christoph Hellwig wrote:
On Fri, Apr 28, 2017 at 11:59:34AM +0200, Jan Kara wrote:
quoted
Fix the problem by making sure journal superblock writes are always
treated as synchronous since they generally block progress of the
journalling machinery and thus the whole filesystem.
The callchains leading down to jbd2_write_superblock looks a little
suspicious to me.  It seems like jbd2_journal_commit_transaction
will actually call without FUA in the JBD2_FLUSHED case. Is that
really intentional, and if yes should it be documented?
I guess you mean this:

                /*
                 * We hold j_checkpoint_mutex so tail cannot change under us.
                 * We don't need any special data guarantees for writing sb
                 * since journal is empty and it is ok for write to be
                 * flushed only with transaction commit.
                 */
                jbd2_journal_update_sb_log_tail(journal,
                                                journal->j_tail_sequence,
                                                journal->j_tail,
                                                REQ_SYNC);

And yes, omitting REQ_FUA is intentional and the comment mentions it as "We
don't need any special data guarantees...". Maybe I could add there an
explicit mentioning of REQ_FUA and REQ_PREFLUSH so that it is clearer what
we are talking about.
Except for that it would seem more useful to move to a "bool preflush"
argument passed down.
Well, we can call jbd2_write_superblock() with REQ_FUA, REQ_PREFLUSH |
REQ_FUA, REQ_SYNC. So one bool argument won't be enough. However I do agree
that it would be cleaner to pass REQ_SYNC directly from all the places
which set some flags which are eventually passed down to
jbd2_write_superblock(). I'll create a cleanup patch for that.
But I guess we'll need a quick fix first, for that:

Reviewed-by: Christoph Hellwig <hch@lst.de>
Thanks!

								Honza
-- 
Jan Kara [off-list ref]
SUSE Labs, CR
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help