linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dave Chinner <david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org>
To: Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
Cc: Glauber Costa <glommer-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>,
	linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Mel Gorman <mgorman-l3A5Bk7waGM@public.gmane.org>,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org,
	Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>,
	Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>,
	Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Dave Chinner <dchinner-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH v8 16/34] xfs: convert buftarg LRU to generic code
Date: Wed, 29 May 2013 20:15:19 +1000	[thread overview]
Message-ID: <20130529101519.GA29466@dastard> (raw)
In-Reply-To: <51A4D3B5.6060802-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>

On Tue, May 28, 2013 at 09:26:37PM +0530, Glauber Costa wrote:
> On 05/25/2013 05:57 AM, Dave Chinner wrote:
> > On Fri, May 24, 2013 at 03:59:10PM +0530, Glauber Costa wrote:
> >> From: Dave Chinner <dchinner-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
> >>
> >> Convert the buftarg LRU to use the new generic LRU list and take
> >> advantage of the functionality it supplies to make the buffer cache
> >> shrinker node aware.
> >>
> >> * v7: Add NUMA aware flag
> > 
> > I know what is wrong with this patch that causes the unmount hang -
> > it's the handling of the _XBF_LRU_DISPOSE flag no longer being
> > modified atomically with the LRU lock. Hence there is a race where
> > we can either lose the _XBF_LRU_DISPOSE or not see it and hence we
> > can end up with code not detecting what list the buffer is on
> > correctly.
> > 
> > I haven't had a chance to work out a fix for it yet. If this ends up
> > likely to hold up the patch set, Glauber, then feel free to drop it
> > from the series and I'll push a fixed version through the XFS tree
> > in due course....
> > 
> > Cheers,
> > 
> > Dave.
> > 
> Please let me know what you think about the following two (very coarse)
> patches. My idea is to expose more of the raw structures so XFS can do
> the locking itself when needed.

No, I'd prefer not to do that.  There's a big difference between a
callback that passes a pointer to an internal lock that protects the
list that the item being passed is on and exposing the guts of the
per node list and lock implementation to everyone....

As it is, the XFS buffer LRU reclaimation is modelled on the
inode/dentry cache lru reclaimation where the "on dispose list" flag
is managed by a lock in the inode/dentry and wraps around the
outside of the LRU locks. The simplest fix to XFS is to add a
spinlock to the buffer to handle this in the same way as inodes and
dentries. I think I might be able to do it in a way that avoids
the spin lock but I just haven't had time to look at it that closely.

Cheers,

Dave.
-- 
Dave Chinner
david-FqsqvQoI3Ljby3iVrkZq2A@public.gmane.org

  parent reply	other threads:[~2013-05-29 10:15 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-24 10:28 [PATCH v8 00/34] kmemcg shrinkers Glauber Costa
2013-05-24 10:28 ` [PATCH v8 02/34] super: fix calculation of shrinkable objects for small numbers Glauber Costa
2013-05-24 10:29 ` [PATCH v8 19/34] drivers: convert shrinkers to new count/scan API Glauber Costa
     [not found] ` <1369391368-31562-1-git-send-email-glommer-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2013-05-24 10:28   ` [PATCH v8 01/34] fs: bump inode and dentry counters to long Glauber Costa
2013-05-24 10:28   ` [PATCH v8 03/34] dcache: convert dentry_stat.nr_unused to per-cpu counters Glauber Costa
2013-05-24 10:28   ` [PATCH v8 04/34] dentry: move to per-sb LRU locks Glauber Costa
2013-05-24 10:28   ` [PATCH v8 05/34] dcache: remove dentries from LRU before putting on dispose list Glauber Costa
2013-05-24 10:29   ` [PATCH v8 06/34] mm: new shrinker API Glauber Costa
2013-05-24 10:29   ` [PATCH v8 07/34] shrinker: convert superblock shrinkers to new API Glauber Costa
2013-05-24 10:29   ` [PATCH v8 08/34] list: add a new LRU list type Glauber Costa
2013-05-24 10:29   ` [PATCH v8 09/34] inode: convert inode lru list to generic lru list code Glauber Costa
2013-05-24 10:29   ` [PATCH v8 10/34] dcache: convert to use new lru list infrastructure Glauber Costa
2013-05-24 10:29   ` [PATCH v8 11/34] list_lru: per-node " Glauber Costa
2013-05-24 10:29   ` [PATCH v8 12/34] shrinker: add node awareness Glauber Costa
2013-05-24 10:29   ` [PATCH v8 13/34] vmscan: per-node deferred work Glauber Costa
2013-05-24 10:29   ` [PATCH v8 14/34] list_lru: per-node API Glauber Costa
2013-05-24 10:29   ` [PATCH v8 15/34] fs: convert inode and dentry shrinking to be node aware Glauber Costa
2013-05-24 10:29   ` [PATCH v8 16/34] xfs: convert buftarg LRU to generic code Glauber Costa
2013-05-25  0:27     ` Dave Chinner
2013-05-28 15:56       ` Glauber Costa
     [not found]         ` <51A4D3B5.6060802-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-05-29 10:15           ` Dave Chinner [this message]
2013-05-29 10:51             ` Glauber Costa
     [not found]               ` <51A5DDCE.509-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-05-29 12:25                 ` Dave Chinner
2013-05-30  7:43                   ` Dave Chinner
2013-05-24 10:29   ` [PATCH v8 17/34] xfs: convert dquot cache lru to list_lru Glauber Costa
2013-05-24 10:29   ` [PATCH v8 18/34] fs: convert fs shrinkers to new scan/count API Glauber Costa
2013-05-24 10:44     ` Steven Whitehouse
2013-05-24 10:29   ` [PATCH v8 20/34] i915: bail out earlier when shrinker cannot acquire mutex Glauber Costa
     [not found]     ` <1369391368-31562-21-git-send-email-glommer-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2013-05-24 21:57       ` Daniel Vetter
2013-05-24 10:29   ` [PATCH v8 21/34] shrinker: convert remaining shrinkers to count/scan API Glauber Costa
2013-05-24 10:29   ` [PATCH v8 22/34] hugepage: convert huge zero page shrinker to new shrinker API Glauber Costa
2013-05-24 10:29   ` [PATCH v8 23/34] shrinker: Kill old ->shrink API Glauber Costa
2013-05-24 10:29   ` [PATCH v8 24/34] vmscan: also shrink slab in memcg pressure Glauber Costa
2013-05-24 10:29   ` [PATCH v8 25/34] memcg,list_lru: duplicate LRUs upon kmemcg creation Glauber Costa
2013-05-24 10:29   ` [PATCH v8 26/34] lru: add an element to a memcg list Glauber Costa
2013-05-24 10:29   ` [PATCH v8 27/34] list_lru: per-memcg walks Glauber Costa
2013-05-24 10:29   ` [PATCH v8 28/34] memcg: per-memcg kmem shrinking Glauber Costa
2013-05-24 10:29   ` [PATCH v8 29/34] memcg: scan cache objects hierarchically Glauber Costa
2013-05-24 10:29   ` [PATCH v8 31/34] super: targeted memcg reclaim Glauber Costa
2013-05-24 10:29   ` [PATCH v8 32/34] memcg: move initialization to memcg creation Glauber Costa
2013-05-24 10:29   ` [PATCH v8 33/34] vmpressure: in-kernel notifications Glauber Costa
2013-05-24 10:29   ` [PATCH v8 34/34] memcg: reap dead memcgs upon global memory pressure Glauber Costa
2013-05-24 10:29 ` [PATCH v8 30/34] vmscan: take at least one pass with shrinkers Glauber Costa

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=20130529101519.GA29466@dastard \
    --to=david-fqsqvqoi3ljby3ivrkzq2a@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dchinner-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=glommer-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org \
    --cc=glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org \
    --cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
    --cc=kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
    --cc=mgorman-l3A5Bk7waGM@public.gmane.org \
    --cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
    --cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /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).