From: Theodore Ts'o <tytso@mit.edu>
To: Jan Kara <jack@suse.cz>
Cc: Eric Sandeen <sandeen@redhat.com>,
ext4 development <linux-ext4@vger.kernel.org>
Subject: Re: [PATCH RFC] jbd: don't wake kjournald unnecessarily
Date: Wed, 19 Dec 2012 10:37:25 -0500 [thread overview]
Message-ID: <20121219153725.GD7795@thunk.org> (raw)
In-Reply-To: <20121219081334.GB20163@quack.suse.cz>
On Wed, Dec 19, 2012 at 09:13:34AM +0100, Jan Kara wrote:
> > I was wondering if, since the tid_g*() functions only work if the
> > distance is half the unsigned int space, we can force a commit at some
> > point if j_transaction_sequence has gotten too far ahead? I'm not sure
> > where or if that could be done...
>
> I don't quiete understand. If someone stores tid = transaction->t_tid and
> in two weeks calls log_start_commit(tid), I don't see how any forcing of
> commits could solve that tid may now look ahead of the log...
Actually, what we can do is the reverse. Right now when we modify an
inode, we stash the tid to indicate "we need to commit to at least
this tid". The problem comes if we haven't modified the inode for a
long time, but then later when we issue an fsync for that inode, it's
after a tid wrap, so we trigger the warning.
What we could do is in cases were we aren't touching the inode note if
the tid value is obviously out of date, and set it to some value which
is one less than the current tid. This avoids the wrap, and in cases
where we are releasing the inode and nothing else is left, it's a safe
thing to do.
The downside is that doing this would incur locking overhead, and it's
not clear it's worth it. Now that we understand what's going on,
nothing bad is happening when the warning is triggered, so we could
just remove it.
If we use a 64-bit in-memory tid, that would help avoid cases where
the tid has wrapped and we get unlucky and hit the 1 in 2**32 case
where we trigger a commit where one is not needed. Given that the
cost of an extra commit with probably 1 in 2**32 is pretty low, it's
probably not worth the overhead of using a 64-bit tid, though....
- Ted
next prev parent reply other threads:[~2012-12-19 15:37 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-18 17:03 [PATCH RFC] jbd: don't wake kjournald unnecessarily Eric Sandeen
2012-12-19 1:27 ` Jan Kara
2012-12-19 2:05 ` Jan Kara
2012-12-19 3:08 ` Eric Sandeen
2012-12-19 8:13 ` Jan Kara
2012-12-19 15:37 ` Theodore Ts'o [this message]
2012-12-19 17:14 ` Jan Kara
2012-12-19 20:27 ` Theodore Ts'o
2012-12-19 21:19 ` Eric Sandeen
2012-12-21 17:01 ` Eric Sandeen
2012-12-21 17:46 ` Theodore Ts'o
2013-01-08 19:19 ` Eric Sandeen
2013-01-11 16:42 ` Eric Sandeen
2013-01-11 19:03 ` Jan Kara
2013-01-11 19:06 ` Eric Sandeen
2012-12-19 15:46 ` Eric Sandeen
2012-12-19 17:11 ` Jan Kara
2012-12-19 2:36 ` Eric Sandeen
2012-12-19 2:59 ` [PATCH] jbd2: " Eric Sandeen
2012-12-19 8:09 ` Jan Kara
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=20121219153725.GD7795@thunk.org \
--to=tytso@mit.edu \
--cc=jack@suse.cz \
--cc=linux-ext4@vger.kernel.org \
--cc=sandeen@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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).