All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Minchan Kim <minchan@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Andi Kleen <andi@firstfloor.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Bob Liu <bob.liu@oracle.com>,
	Christoph Hellwig <hch@infradead.org>,
	Dave Chinner <david@fromorbit.com>,
	Greg Thelen <gthelen@google.com>, Hugh Dickins <hughd@google.com>,
	Jan Kara <jack@suse.cz>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Luigi Semenzato <semenzato@google.com>,
	Mel Gorman <mgorman@suse.de>, Metin Doslu <metin@citusdata.com>,
	Michel Lespinasse <walken@google.com>,
	Ozgun Erdogan <ozgun@citusdata.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Rik van Riel <riel@redhat.com>,
	Roman Gushchin <klamm@yandex-team.ru>,
	Ryan Mallon <rmallon@gmail.com>, Tejun Heo <tj@kernel.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [patch 5/9] mm + fs: prepare for non-page entries in page cache radix trees
Date: Wed, 22 Jan 2014 12:47:44 -0500	[thread overview]
Message-ID: <20140122174744.GC4407@cmpxchg.org> (raw)
In-Reply-To: <20140113020132.GO1992@bbox>

On Mon, Jan 13, 2014 at 11:01:32AM +0900, Minchan Kim wrote:
> On Fri, Jan 10, 2014 at 01:10:39PM -0500, Johannes Weiner wrote:
> > shmem mappings already contain exceptional entries where swap slot
> > information is remembered.
> > 
> > To be able to store eviction information for regular page cache,
> > prepare every site dealing with the radix trees directly to handle
> > entries other than pages.
> > 
> > The common lookup functions will filter out non-page entries and
> > return NULL for page cache holes, just as before.  But provide a raw
> > version of the API which returns non-page entries as well, and switch
> > shmem over to use it.
> > 
> > Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
> Reviewed-by: Minchan Kim <minchan@kernel.org>

Thanks, Minchan!

> > @@ -890,6 +973,73 @@ repeat:
> >  EXPORT_SYMBOL(find_or_create_page);
> >  
> >  /**
> > + * __find_get_pages - gang pagecache lookup
> > + * @mapping:	The address_space to search
> > + * @start:	The starting page index
> > + * @nr_pages:	The maximum number of pages
> > + * @pages:	Where the resulting pages are placed
> 
> where is @indices?

Fixed :)

> > @@ -894,6 +894,53 @@ EXPORT_SYMBOL(__pagevec_lru_add);
> >  
> >  /**
> >   * pagevec_lookup - gang pagecache lookup
> 
>       __pagevec_lookup?
> 
> > + * @pvec:	Where the resulting entries are placed
> > + * @mapping:	The address_space to search
> > + * @start:	The starting entry index
> > + * @nr_pages:	The maximum number of entries
> 
>       missing @indices?
> 
> > + *
> > + * pagevec_lookup() will search for and return a group of up to
> > + * @nr_pages pages and shadow entries in the mapping.  All entries are
> > + * placed in @pvec.  pagevec_lookup() takes a reference against actual
> > + * pages in @pvec.
> > + *
> > + * The search returns a group of mapping-contiguous entries with
> > + * ascending indexes.  There may be holes in the indices due to
> > + * not-present entries.
> > + *
> > + * pagevec_lookup() returns the number of entries which were found.
> 
>       __pagevec_lookup

Yikes, all three fixed.

> > @@ -22,6 +22,22 @@
> >  #include <linux/cleancache.h>
> >  #include "internal.h"
> >  
> > +static void clear_exceptional_entry(struct address_space *mapping,
> > +				    pgoff_t index, void *entry)
> > +{
> > +	/* Handled by shmem itself */
> > +	if (shmem_mapping(mapping))
> > +		return;
> > +
> > +	spin_lock_irq(&mapping->tree_lock);
> > +	/*
> > +	 * Regular page slots are stabilized by the page lock even
> > +	 * without the tree itself locked.  These unlocked entries
> > +	 * need verification under the tree lock.
> > +	 */
> 
> Could you explain why repeated spin_lock with irq disabled isn't problem
> in truncation path?

To modify the cache tree, we have to take the IRQ-safe tree_lock, this
is no different than removing a page (see truncate_complete_page).

WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Minchan Kim <minchan@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Andi Kleen <andi@firstfloor.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Bob Liu <bob.liu@oracle.com>,
	Christoph Hellwig <hch@infradead.org>,
	Dave Chinner <david@fromorbit.com>,
	Greg Thelen <gthelen@google.com>, Hugh Dickins <hughd@google.com>,
	Jan Kara <jack@suse.cz>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Luigi Semenzato <semenzato@google.com>,
	Mel Gorman <mgorman@suse.de>, Metin Doslu <metin@citusdata.com>,
	Michel Lespinasse <walken@google.com>,
	Ozgun Erdogan <ozgun@citusdata.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Rik van Riel <riel@redhat.com>,
	Roman Gushchin <klamm@yandex-team.ru>,
	Ryan Mallon <rmallon@gmail.com>, Tejun Heo <tj@kernel.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [patch 5/9] mm + fs: prepare for non-page entries in page cache radix trees
Date: Wed, 22 Jan 2014 12:47:44 -0500	[thread overview]
Message-ID: <20140122174744.GC4407@cmpxchg.org> (raw)
In-Reply-To: <20140113020132.GO1992@bbox>

On Mon, Jan 13, 2014 at 11:01:32AM +0900, Minchan Kim wrote:
> On Fri, Jan 10, 2014 at 01:10:39PM -0500, Johannes Weiner wrote:
> > shmem mappings already contain exceptional entries where swap slot
> > information is remembered.
> > 
> > To be able to store eviction information for regular page cache,
> > prepare every site dealing with the radix trees directly to handle
> > entries other than pages.
> > 
> > The common lookup functions will filter out non-page entries and
> > return NULL for page cache holes, just as before.  But provide a raw
> > version of the API which returns non-page entries as well, and switch
> > shmem over to use it.
> > 
> > Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
> Reviewed-by: Minchan Kim <minchan@kernel.org>

Thanks, Minchan!

> > @@ -890,6 +973,73 @@ repeat:
> >  EXPORT_SYMBOL(find_or_create_page);
> >  
> >  /**
> > + * __find_get_pages - gang pagecache lookup
> > + * @mapping:	The address_space to search
> > + * @start:	The starting page index
> > + * @nr_pages:	The maximum number of pages
> > + * @pages:	Where the resulting pages are placed
> 
> where is @indices?

Fixed :)

> > @@ -894,6 +894,53 @@ EXPORT_SYMBOL(__pagevec_lru_add);
> >  
> >  /**
> >   * pagevec_lookup - gang pagecache lookup
> 
>       __pagevec_lookup?
> 
> > + * @pvec:	Where the resulting entries are placed
> > + * @mapping:	The address_space to search
> > + * @start:	The starting entry index
> > + * @nr_pages:	The maximum number of entries
> 
>       missing @indices?
> 
> > + *
> > + * pagevec_lookup() will search for and return a group of up to
> > + * @nr_pages pages and shadow entries in the mapping.  All entries are
> > + * placed in @pvec.  pagevec_lookup() takes a reference against actual
> > + * pages in @pvec.
> > + *
> > + * The search returns a group of mapping-contiguous entries with
> > + * ascending indexes.  There may be holes in the indices due to
> > + * not-present entries.
> > + *
> > + * pagevec_lookup() returns the number of entries which were found.
> 
>       __pagevec_lookup

Yikes, all three fixed.

> > @@ -22,6 +22,22 @@
> >  #include <linux/cleancache.h>
> >  #include "internal.h"
> >  
> > +static void clear_exceptional_entry(struct address_space *mapping,
> > +				    pgoff_t index, void *entry)
> > +{
> > +	/* Handled by shmem itself */
> > +	if (shmem_mapping(mapping))
> > +		return;
> > +
> > +	spin_lock_irq(&mapping->tree_lock);
> > +	/*
> > +	 * Regular page slots are stabilized by the page lock even
> > +	 * without the tree itself locked.  These unlocked entries
> > +	 * need verification under the tree lock.
> > +	 */
> 
> Could you explain why repeated spin_lock with irq disabled isn't problem
> in truncation path?

To modify the cache tree, we have to take the IRQ-safe tree_lock, this
is no different than removing a page (see truncate_complete_page).

--
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:[~2014-01-22 17:48 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-10 18:10 [patch 0/9] mm: thrash detection-based file cache sizing v8 Johannes Weiner
2014-01-10 18:10 ` Johannes Weiner
2014-01-10 18:10 ` [patch 1/9] fs: cachefiles: use add_to_page_cache_lru() Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-13  1:17   ` Minchan Kim
2014-01-13  1:17     ` Minchan Kim
2014-01-10 18:10 ` [patch 2/9] lib: radix-tree: radix_tree_delete_item() Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 18:10 ` [patch 3/9] mm: shmem: save one radix tree lookup when truncating swapped pages Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 18:25   ` Rik van Riel
2014-01-10 18:25     ` Rik van Riel
2014-01-10 18:25     ` Rik van Riel
2014-01-10 18:10 ` [patch 4/9] mm: filemap: move radix tree hole searching here Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 19:22   ` Rik van Riel
2014-01-10 19:22     ` Rik van Riel
2014-01-10 19:22     ` Rik van Riel
2014-01-13  1:25   ` Minchan Kim
2014-01-13  1:25     ` Minchan Kim
2014-01-10 18:10 ` [patch 5/9] mm + fs: prepare for non-page entries in page cache radix trees Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 19:39   ` Rik van Riel
2014-01-10 19:39     ` Rik van Riel
2014-01-10 19:39     ` Rik van Riel
2014-01-13  2:01   ` Minchan Kim
2014-01-13  2:01     ` Minchan Kim
2014-01-22 17:47     ` Johannes Weiner [this message]
2014-01-22 17:47       ` Johannes Weiner
2014-01-23  5:07       ` Minchan Kim
2014-01-23  5:07         ` Minchan Kim
2014-02-12 14:00   ` Mel Gorman
2014-02-12 14:00     ` Mel Gorman
2014-03-12  1:15     ` Johannes Weiner
2014-03-12  1:15       ` Johannes Weiner
2014-01-10 18:10 ` [patch 6/9] mm + fs: store shadow entries in page cache Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 22:30   ` Rik van Riel
2014-01-10 22:30     ` Rik van Riel
2014-01-10 22:30     ` Rik van Riel
2014-01-13  2:18   ` Minchan Kim
2014-01-13  2:18     ` Minchan Kim
2014-01-10 18:10 ` [patch 7/9] mm: thrash detection-based file cache sizing Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 22:51   ` Rik van Riel
2014-01-10 22:51     ` Rik van Riel
2014-01-10 22:51     ` Rik van Riel
2014-01-13  2:42   ` Minchan Kim
2014-01-13  2:42     ` Minchan Kim
2014-01-14  1:01   ` Bob Liu
2014-01-14  1:01     ` Bob Liu
2014-01-14  1:01     ` Bob Liu
2014-01-14 19:16     ` Johannes Weiner
2014-01-14 19:16       ` Johannes Weiner
2014-01-15  2:57       ` Bob Liu
2014-01-15  2:57         ` Bob Liu
2014-01-15  2:57         ` Bob Liu
2014-01-15  3:52         ` Zhang Yanfei
2014-01-15  3:52           ` Zhang Yanfei
2014-01-16 21:17         ` Johannes Weiner
2014-01-16 21:17           ` Johannes Weiner
2014-01-10 18:10 ` [patch 8/9] lib: radix_tree: tree node interface Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 22:57   ` Rik van Riel
2014-01-10 22:57     ` Rik van Riel
2014-01-10 22:57     ` Rik van Riel
2014-01-10 18:10 ` [patch 9/9] mm: keep page cache radix tree nodes in check Johannes Weiner
2014-01-10 18:10   ` Johannes Weiner
2014-01-10 23:09   ` Rik van Riel
2014-01-10 23:09     ` Rik van Riel
2014-01-10 23:09     ` Rik van Riel
2014-01-13  7:39   ` Minchan Kim
2014-01-13  7:39     ` Minchan Kim
2014-01-14  5:40     ` Minchan Kim
2014-01-14  5:40       ` Minchan Kim
2014-01-22 18:42     ` Johannes Weiner
2014-01-22 18:42       ` Johannes Weiner
2014-01-23  5:20       ` Minchan Kim
2014-01-23  5:20         ` Minchan Kim
2014-01-23 19:22         ` Johannes Weiner
2014-01-23 19:22           ` Johannes Weiner
2014-01-27  2:31           ` Minchan Kim
2014-01-27  2:31             ` Minchan Kim
2014-01-15  5:55   ` Bob Liu
2014-01-15  5:55     ` Bob Liu
2014-01-15  5:55     ` Bob Liu
2014-01-16 22:09     ` Johannes Weiner
2014-01-16 22:09       ` Johannes Weiner
2014-01-17  0:05   ` Dave Chinner
2014-01-17  0:05     ` Dave Chinner
2014-01-20 23:17     ` Johannes Weiner
2014-01-20 23:17       ` Johannes Weiner
2014-01-21  3:03       ` Dave Chinner
2014-01-21  3:03         ` Dave Chinner
2014-01-21  5:50         ` Johannes Weiner
2014-01-21  5:50           ` Johannes Weiner
2014-01-22  3:06           ` Dave Chinner
2014-01-22  3:06             ` Dave Chinner
2014-01-22  6:57             ` Johannes Weiner
2014-01-22  6:57               ` Johannes Weiner
2014-01-22 18:48               ` Johannes Weiner
2014-01-22 18:48                 ` Johannes Weiner
2014-01-23  5:57       ` Minchan Kim
2014-01-23  5:57         ` Minchan Kim
  -- strict thread matches above, loose matches on Subject: below --
2013-12-02 19:21 [patch 0/9] mm: thrash detection-based file cache sizing v7 Johannes Weiner
2013-12-02 19:21 ` [patch 5/9] mm + fs: prepare for non-page entries in page cache radix trees Johannes Weiner
2013-12-02 19:21   ` Johannes Weiner
2013-11-24 23:38 [patch 0/9] mm: thrash detection-based file cache sizing v6 Johannes Weiner
2013-11-24 23:38 ` [patch 5/9] mm + fs: prepare for non-page entries in page cache radix trees Johannes Weiner
2013-11-24 23:38   ` Johannes Weiner

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=20140122174744.GC4407@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=bob.liu@oracle.com \
    --cc=david@fromorbit.com \
    --cc=gthelen@google.com \
    --cc=hch@infradead.org \
    --cc=hughd@google.com \
    --cc=jack@suse.cz \
    --cc=klamm@yandex-team.ru \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=metin@citusdata.com \
    --cc=mgorman@suse.de \
    --cc=minchan@kernel.org \
    --cc=ozgun@citusdata.com \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=rmallon@gmail.com \
    --cc=semenzato@google.com \
    --cc=tj@kernel.org \
    --cc=vbabka@suse.cz \
    --cc=walken@google.com \
    /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.