From: Jan Kara <jack@suse.cz>
To: Alexander Lochmann <alexander.lochmann@tu-dortmund.de>
Cc: Jan Kara <jack@suse.cz>,
Horst Schirmeier <horst.schirmeier@tu-dortmund.de>,
Theodore Ts'o <tytso@mit.edu>, Jan Kara <jack@suse.com>,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] Updated locking documentation for transaction_t
Date: Mon, 29 Mar 2021 12:14:29 +0200 [thread overview]
Message-ID: <20210329101429.GA4283@quack2.suse.cz> (raw)
In-Reply-To: <ec682a4c-f4f7-35fe-dc35-6c0b53d6ecda@tu-dortmund.de>
On Fri 26-03-21 09:18:45, Alexander Lochmann wrote:
> On 11.02.21 10:30, Jan Kara wrote:
> >> diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h
> >> index 99d3cd051ac3..18f77d9b1745 100644
> >> --- a/include/linux/jbd2.h
> >> +++ b/include/linux/jbd2.h
> >> @@ -594,18 +594,18 @@ struct transaction_s
> >> */
> >> unsigned long t_log_start;
> >>
> >> - /* Number of buffers on the t_buffers list [j_list_lock] */
> >> + /* Number of buffers on the t_buffers list [j_list_lock, no lock for quick racy checks] */
> >> int t_nr_buffers;
> >
> > So this case is actually somewhat different now that I audited the uses.
> > There are two types of users - commit code (fs/jbd2/commit.c) and others.
> > Other users properly use j_list_lock to access t_nr_buffers. Commit code
> > does not use any locks because committing transaction is fully in
> > ownership of the jbd2 thread and all other users need to check & wait for
> > commit to be finished before doing anything with the transaction's buffers.
>
> I'm still trying understand how thinks work:
> Accesses to transaction_t might occur from different contexts. Thus,
> locks are necessary. If it comes to the commit phase, every other
> context has to wait until jbd2 thread has done its work. Therefore, jbd2
> thread does not need any locks to access a transaction_t (or just parts
> of it?) during commit phase.
> Is that correct?
Yes, that is correct.
> If so: I was thinking whether it make sense to ignore all memory
> accesses to a transaction_t (or parts of it) that happen in the commit
> phase. They deliberately ignore the locking policy, and would confuse
> our approach.
>
> Is the commit phase performed by jbd2_journal_commit_transaction()?
> We would add this function to our blacklist for transaction_t.
Yes, commit phase is implemented by jbd2_journal_commit_transaction() and
the functions it calls.
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
next prev parent reply other threads:[~2021-03-29 10:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-10 9:57 [PATCH 2/2] Updated locking documentation for journal_t Alexander Lochmann
2021-02-10 9:57 ` [PATCH 1/2] Updated locking documentation for transaction_t Alexander Lochmann
2021-02-11 9:30 ` Jan Kara
2021-02-11 9:53 ` Alexander Lochmann
2021-02-11 13:13 ` Jan Kara
2021-03-26 8:18 ` Alexander Lochmann
2021-03-29 10:14 ` Jan Kara [this message]
2021-02-11 9:37 ` [PATCH 2/2] Updated locking documentation for journal_t Jan Kara
2021-02-11 9:51 ` [PATCH v2] " Alexander Lochmann
2021-03-17 20:57 ` Alexander Lochmann
2021-04-02 15:40 ` Theodore Ts'o
-- strict thread matches above, loose matches on Subject: below --
2021-02-10 9:56 [PATCH 1/2] Updated locking documentation for transaction_t Alexander Lochmann
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=20210329101429.GA4283@quack2.suse.cz \
--to=jack@suse.cz \
--cc=alexander.lochmann@tu-dortmund.de \
--cc=horst.schirmeier@tu-dortmund.de \
--cc=jack@suse.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tytso@mit.edu \
/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 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.