Re: [PATCH 1/3] mm: add context argument to shrinker callback

From: Dave Chinner
Date: Tue Jul 20 2010 - 18:54:12 EST


On Tue, Jul 20, 2010 at 02:30:04PM -0500, Alex Elder wrote:
> On Thu, 2010-07-15 at 21:46 +1000, Dave Chinner wrote:
> > From: Dave Chinner <dchinner@xxxxxxxxxx>
> >
> > The current shrinker implementation requires the registered callback
> > to have global state to work from. This makes it difficult to shrink
> > caches that are not global (e.g. per-filesystem caches). Pass the shrinker
> > structure to the callback so that users can embed the shrinker structure
> > in the context the shrinker needs to operate on and get back to it in the
> > callback via container_of().
>
> > Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> > ---
> > arch/x86/kvm/mmu.c | 2 +-
> > drivers/gpu/drm/i915/i915_gem.c | 2 +-
> > fs/dcache.c | 2 +-
> > fs/gfs2/glock.c | 2 +-
> > fs/gfs2/quota.c | 2 +-
> > fs/gfs2/quota.h | 2 +-
> > fs/inode.c | 2 +-
> > fs/mbcache.c | 5 +++--
> > fs/nfs/dir.c | 2 +-
> > fs/nfs/internal.h | 3 ++-
> > fs/quota/dquot.c | 2 +-
> > fs/ubifs/shrinker.c | 2 +-
> > fs/ubifs/ubifs.h | 2 +-
> > fs/xfs/linux-2.6/xfs_buf.c | 5 +++--
> > fs/xfs/linux-2.6/xfs_sync.c | 1 +
> > fs/xfs/quota/xfs_qm.c | 7 +++++--
> > include/linux/mm.h | 2 +-
> > mm/vmscan.c | 8 +++++---
> > 18 files changed, 31 insertions(+), 22 deletions(-)
>
> You seem to have missed two registered shrinkers:
> - ttm_pool_mm_shrink() in "drivers/gpu/drm/ttm/ttm_page_alloc.c"
> - rpcauth_cache_shrinker() in "net/sunrpc/auth.c"

Bugger - one's a new shrinker since 2.6.34, and I'm not sure how I
missed the auth cache one. Oh, it throws a single warning:

net/sunrpc/auth.c:586: warning: initialization from incompatible pointer type

that I didn't notice as being a new warning.

Oh well, time to update.

Cheers,

Dave.
--
Dave Chinner
david@xxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/