linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Jan Kara <jack@suse.cz>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>,
	linux-kernel@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Andreas Dilger <adilger.kernel@dilger.ca>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dan Williams <dan.j.williams@intel.com>,
	Dave Chinner <david@fromorbit.com>, Jan Kara <jack@suse.com>,
	linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, linux-nvdimm@lists.01.org
Subject: Re: [PATCH 5/7] dax: lock based on slot instead of [mapping, index]
Date: Wed, 17 Aug 2016 14:25:56 -0600	[thread overview]
Message-ID: <20160817202556.GA13009@linux.intel.com> (raw)
In-Reply-To: <20160816092816.GE27284@quack2.suse.cz>

On Tue, Aug 16, 2016 at 11:28:16AM +0200, Jan Kara wrote:
> On Mon 15-08-16 13:09:16, Ross Zwisler wrote:
> > DAX radix tree locking currently locks entries based on the unique
> > combination of the 'mapping' pointer and the pgoff_t 'index' for the entry.
> > This works for PTEs, but as we move to PMDs we will need to have all the
> > offsets within the range covered by the PMD to map to the same bit lock.
> > To accomplish this, lock based on the 'slot' pointer in the radix tree
> > instead of [mapping, index].
> 
> I'm not convinced this is safe. What makes the slot pointer still valid
> after you drop tree_lock? At least radix_tree_shrink() or
> radix_tree_expand() could move your slot without letting the waiter know
> and he would be never woken.
> 
> 								Honza

Yep, you're right, thanks for catching that.

Given that we can't rely on 'slot' being stable, my next idea is to use a
combination of [mapping, index], but tweak 'index' so that it's always the
beginning of the entry.  So for 4k entries we'd leave it alone, but for 2MiB
entries we'd mask it down to the appropriate 2MiB barrier.

Let me hack on that for a bit, unless you've a better idea.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2016-08-17 20:26 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-15 19:09 [PATCH 0/7] re-enable DAX PMD support Ross Zwisler
2016-08-15 19:09 ` [PATCH 1/7] ext2: tell DAX the size of allocation holes Ross Zwisler
2016-08-16  9:10   ` Jan Kara
2016-08-16 22:52     ` Ross Zwisler
2016-08-15 19:09 ` [PATCH 2/7] ext4: " Ross Zwisler
2016-08-16  9:12   ` Jan Kara
2016-08-15 19:09 ` [PATCH 3/7] dax: remove buffer_size_valid() Ross Zwisler
2016-08-16  9:13   ` Jan Kara
2016-08-15 19:09 ` [PATCH 4/7] dax: rename 'ret' to 'entry' in grab_mapping_entry Ross Zwisler
2016-08-16  9:14   ` Jan Kara
2016-08-15 19:09 ` [PATCH 5/7] dax: lock based on slot instead of [mapping, index] Ross Zwisler
2016-08-16  9:28   ` Jan Kara
2016-08-17 20:25     ` Ross Zwisler [this message]
2016-08-18 14:15       ` Jan Kara
2016-08-15 19:09 ` [PATCH 6/7] dax: re-enable DAX PMD support Ross Zwisler
2016-08-15 19:09 ` [PATCH 7/7] dax: remove "depends on BROKEN" from FS_DAX_PMD Ross Zwisler
2016-08-15 20:21 ` [PATCH 0/7] re-enable DAX PMD support Dan Williams
2016-08-15 21:11   ` Ross Zwisler
2016-08-15 21:14     ` Dan Williams
2016-08-17 16:21       ` Ross Zwisler
2016-08-17 17:21         ` 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=20160817202556.GA13009@linux.intel.com \
    --to=ross.zwisler@linux.intel.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=akpm@linux-foundation.org \
    --cc=dan.j.williams@intel.com \
    --cc=david@fromorbit.com \
    --cc=jack@suse.com \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=tytso@mit.edu \
    --cc=viro@zeniv.linux.org.uk \
    /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