From: Liu Bo <liubo2009@cn.fujitsu.com>
To: Chris Mason <chris.mason@oracle.com>, linux-btrfs@vger.kernel.org
Subject: Re: new integration-danger branch pushed out (kernel)
Date: Tue, 01 Nov 2011 17:22:20 +0800 [thread overview]
Message-ID: <4EAFBA4C.1080201@cn.fujitsu.com> (raw)
In-Reply-To: <20111101024957.GH4468@shiny>
Hi,
On 11/01/2011 10:49 AM, Chris Mason wrote:
> Hi everyone,
>
> I've pushed out a new integration branch, but it is not for general use.
>
> I'm still going through and hammering on the new logging code code to
> make sure it is properly backwards compatible with older kernels and
> that it hasn't introduced any new bugs.
>
> *** Please do not use this code on anything other than test filesystems that
> can easily be reformatted. ***
>
> In testing the new sub-transid logging code, I've spent a lot of time
> hunting logging bugs, and writing new tests to try and make sure the
> logging code is working correctly in general. Between that and some new
> tests from Arne, I've had to make some pretty big changes to the code.
>
I'm giving a hard read on the new code, and I notice a slight change:
@@ -3006,14 +3179,11 @@ out:
static int inode_in_log(struct btrfs_trans_handle *trans,
struct inode *inode)
{
- struct btrfs_root *root = BTRFS_I(inode)->root;
int ret = 0;
- mutex_lock(&root->log_mutex);
- if (BTRFS_I(inode)->logged_trans == trans->transid &&
- BTRFS_I(inode)->last_sub_trans <= root->last_log_commit)
+ if (BTRFS_I(inode)->logged_trans >= trans->transaction->transid &&
+ BTRFS_I(inode)->last_trans < BTRFS_I(inode)->logged_trans)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ret = 1;
- mutex_unlock(&root->log_mutex);
return ret;
}
since we've moved the "sub_transid++" update to btrfs_sync_log(), the ending of log,
say there is a case like this:
transaction ------------------------------------------ start
|
sub_trans A | --- start
|
| --- modify inode X, and set X's last_trans to sub_transid
| |
| | --- fsync inode X, and set X's logged_trans to sub_transid
| |
| | --- in btrfs_sync_log(), sub_transid++
| |
\|/ | --- end
|
sub_trans A+1 | --- start
|
| --- no change to inode X
|
| --- fsync inode X
|
| --- in inode_in_log(), X's last_trans is equal to X's logged_trans,
unchanged X is just in the log, but we need to log X again.
...... ......
transaction ------------------------------------------ end
we do not want this, does we? Or am I missing something?
thanks,
liubo
> This meant collapsing Fujitsu's original nicely broken out patches into
> a larger patch so that I could be sure later kernel bisections wouldn't
> run into problems. All credit to Liu Bo and Fujitsu for getting the
> sub-transid work going, any bugs in the pushed patch are probably ones
> I introduced.
>
> integration-danger merges in the new sub-transid logging code along with
> all of the fixes Dave Sterba has been tracking, and Josef's code.
>
> I'm still merging in trees from Arne and Jan Schmidt, those should get
> pushed out tomorrow afternoon.
>
> -chris
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2011-11-01 9:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-01 2:49 new integration-danger branch pushed out (kernel) Chris Mason
2011-11-01 9:22 ` Liu Bo [this message]
2011-11-01 10:55 ` Chris Mason
2011-11-02 2:22 ` Liu Bo
2011-11-01 10:11 ` Warnings (was: Re: new integration-danger branch pushed out (kernel)) David Sterba
2011-11-02 0:56 ` Chris Mason
2011-11-02 13:06 ` David Sterba
2011-11-01 10:28 ` Warnings: destroy inode (was: " David Sterba
2011-11-01 10:36 ` BUG at fs/btrfs/tree-log.c:3106 (Re: " David Sterba
2011-11-01 10:56 ` Chris Mason
2011-11-01 16:16 ` David Sterba
2011-11-01 16:39 ` David Sterba
2011-11-01 12:56 ` Warnings and crash David Sterba
2011-11-02 23:02 ` David Sterba
2011-11-02 23:40 ` Chris Mason
2011-11-04 0:39 ` Mitch Harder
2011-11-02 17:06 ` All green (Re: new integration-danger branch pushed out (kernel)) David Sterba
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=4EAFBA4C.1080201@cn.fujitsu.com \
--to=liubo2009@cn.fujitsu.com \
--cc=chris.mason@oracle.com \
--cc=linux-btrfs@vger.kernel.org \
/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