mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: "Theodore Ts'o" <tytso@mit.edu>,
	"Johannes Stezenbach" <js@sig21.net>,
	"Török Edwin" <edwin@etorok.net>,
	linux-kernel@vger.kernel.org, linux-ext4@vger.kernel.org
Subject: Re: 4.7.0-rc7 ext4 error in dx_probe
Date: Mon, 8 Aug 2016 09:55:46 -0700	[thread overview]
Message-ID: <20160808165546.GA11291@birch.djwong.org> (raw)
In-Reply-To: <20160808160818.GA9515@thunk.org>

On Mon, Aug 08, 2016 at 12:08:18PM -0400, Theodore Ts'o wrote:
> On Sun, Aug 07, 2016 at 11:28:10PM -0700, Darrick J. Wong wrote:
> > 
> > I have one lingering concern -- is it a bug that two processes could be
> > computing the checksum of a buffer simultaneously?  I would have thought ext4
> > would serialize that kind of buffer_head access...
> 
> Do we know how this is happening?  We've always depended on the VFS to
> provide this exclusion.  The only way we should be modifying the
> buffer_head at the same time if two CPU's are trying to modify the
> directory at the same time, and that should _never_ be happening, even
> with the new directory parallism code, unless the file system has
> given permission and intends to do its own fine-grained locking.

It's a combination of two things, I think.  The first is that the
checksum calculation routine (temporarily) set the checksum field to
zero during the computation, which of course is a no-no.  The patch
fixes that problem and should go in.

The second problem is that we now can have multiple lookups at the same
time, which means that there can be more than one CPU calling into
dx_probe on the same directory blocks at the same time.  There isn't any
locking on the buffer heads between readers, so we can end up with
ext4_read_dirblock racing with itself to verify the block.  It's perhaps
a little inefficient for multiple threads to be checksumming the same
block, but only turns deadly if you combine it with the first problem.

--D

> 
>       		     	     	       	   - Ted

  reply	other threads:[~2016-08-08 16:56 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-18 10:57 Johannes Stezenbach
2016-07-18 13:38 ` Theodore Ts'o
2016-07-18 14:17   ` Johannes Stezenbach
2016-07-27 11:58     ` Johannes Stezenbach
2016-08-03 14:50     ` Török Edwin
2016-08-05 10:35       ` Johannes Stezenbach
2016-08-05 17:02         ` Darrick J. Wong
2016-08-05 18:11           ` Johannes Stezenbach
2016-08-05 19:15             ` Darrick J. Wong
2016-08-08  3:56               ` Theodore Ts'o
2016-08-08  6:28                 ` Darrick J. Wong
2016-08-08 16:08                   ` Theodore Ts'o
2016-08-08 16:55                     ` Darrick J. Wong [this message]
2016-08-08 21:13                       ` Török Edwin
2016-08-09  2:37                         ` Darrick J. Wong
2016-08-09  7:12                           ` Török Edwin
2016-08-17 14:27                   ` Török Edwin
2016-08-17 23:28                     ` Darrick J. Wong
2016-08-22  7:33                       ` Török Edwin
2016-09-01 16:40                         ` Darrick J. Wong
2016-08-17 20:02             ` Johannes Stezenbach
2016-08-18  7:44               ` Török Edwin

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=20160808165546.GA11291@birch.djwong.org \
    --to=darrick.wong@oracle.com \
    --cc=edwin@etorok.net \
    --cc=js@sig21.net \
    --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

all inboxes | Powered by JetHome®