linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Lochmann <alexander.lochmann@tu-dortmund.de>
To: "Theodore Ts'o" <tytso@mit.edu>,
	Horst Schirmeier <horst.schirmeier@tu-dortmund.de>,
	Jan Kara <jack@suse.com>,
	linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [v2] Updated locking documentation for transaction_t
Date: Mon, 8 Apr 2019 10:32:35 +0200	[thread overview]
Message-ID: <ec3b972e-8342-8359-448d-3efaa476d5b3@tu-dortmund.de> (raw)
In-Reply-To: <20190407165206.GA11370@mit.edu>


[-- Attachment #1.1: Type: text/plain, Size: 2102 bytes --]

Thanks, Ted, for your feedback!
I'll submit a modified version.

- Alex

On 07.04.19 18:52, Theodore Ts'o wrote:
> On Mon, Mar 18, 2019 at 07:42:37PM +0100, Alexander Lochmann wrote:
>>  	/*t
>> -	 * Where in the log does this transaction's commit start? [no locking]
>> +	 * Where in the log does this transaction's commit start?
>> +	 * [journal_t.j_state_lock]
>>  	 */
>>  	unsigned long		t_log_start;
> 
> Well, technically, that's not quite right.  It's only assigned in one
> location, and we hold j_state_lock, yes.  But that's because we need
> to access journal->j_head.  At the point where we set t_log_start, the
> transaction has already been locked down (transaction->t_state >
> T_LOCKED).
> 
> Similarly, we happen to be holding j_state where it is currently being
> accessed, but it's not because we needed the lock in order to access
> t_log_start safely.
> 
>>  	/*
>> -	 * When transaction started
>> +	 * When transaction started [journal_t.j_state_lock]
>>  	 */
>>  	unsigned long		t_start;
> 
> And again, not really.  The primary place where t_start is set is when
> the transaction is firstt created, before it's visible anywhere else.
> after that, it is used exclusively by the commit thread, and so no
> locking is necessary.  It's true that in the places where it is used,
> j_state_lock happens to be taken, but it's strictly not necessary.
> 
>>  
>>  	/*
>> -	 * When commit was requested
>> +	 * When commit was requested [journal_t.j_state_lock]
>>  	 */
>>  	unsigned long		t_requested;
> 
> Yes, that appears to be correct.
> 
>>  
>>  	/*
>> -	 * Checkpointing stats [j_checkpoint_sem]
>> +	 * Checkpointing stats [journal_t.j_list_lock]
>>  	 */
>>  	struct transaction_chp_stats_s t_chp_stats;
>>
> 
> This appears to be correct.
> 
> 						- Ted
> 

-- 
Technische Universität Dortmund
Alexander Lochmann                PGP key: 0xBC3EF6FD
Otto-Hahn-Str. 16                 phone:  +49.231.7556141
D-44227 Dortmund                  fax:    +49.231.7556116
http://ess.cs.tu-dortmund.de/Staff/al


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

      reply	other threads:[~2019-04-08  8:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-18 18:42 [PATCH v2] Updated locking documentation for transaction_t Alexander Lochmann
2019-03-19  8:33 ` Jan Kara
2019-04-07 16:52 ` [v2] " Theodore Ts'o
2019-04-08  8:32   ` Alexander Lochmann [this message]

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=ec3b972e-8342-8359-448d-3efaa476d5b3@tu-dortmund.de \
    --to=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 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).