Re: [PATCH 0/2 v2] dcache: get/release read lock inread_seqbegin_or_lock() & friend

From: Al Viro
Date: Thu Sep 12 2013 - 17:57:11 EST


On Thu, Sep 12, 2013 at 12:04:56PM -0700, Linus Torvalds wrote:
> On Thu, Sep 12, 2013 at 12:01 PM, Waiman Long <waiman.long@xxxxxx> wrote:
> >
> > Yes, I think we can do something similar for this. I will take a look to see
> > how it can be fixed.
>
> Actually, it was so trivial that I already did it, and only had one
> stupid brown-bag moment while doing so.
>
> Now my threaded test-case spends most of its time allocating the
> temporary page for the result.
>
> It's pushed out.
>
> Btw, Al, I really want a pull request from you to fix the "returning
> to user space with semaphore held" thing. Or I'm going to apply the
> patch myself. I'm on the road starting very early tomorrow morning,
> and I don't want to have that hanging over me..

Well... The pull request contains quite a bit more than that - list_lru
pile, mostly. Please, pull from the usual place -
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus

Shortlog:
Al Viro (1):
... and fold the renamed __vfs_follow_link() into its only caller

Andrew Morton (2):
xfs-convert-buftarg-lru-to-generic-code-fix
xfs-convert-dquot-cache-lru-to-list_lru-fix

Christoph Hellwig (1):
fs: remove vfs_follow_link

Dave Chinner (20):
dcache: convert dentry_stat.nr_unused to per-cpu counters
dentry: move to per-sb LRU locks
dcache: remove dentries from LRU before putting on dispose list
mm: new shrinker API
shrinker: convert superblock shrinkers to new API
list: add a new LRU list type
inode: convert inode lru list to generic lru list code.
dcache: convert to use new lru list infrastructure
list_lru: per-node list infrastructure
list_lru: fix broken LRU_RETRY behaviour
shrinker: add node awareness
fs: convert inode and dentry shrinking to be node aware
xfs: convert buftarg LRU to generic code
xfs: rework buffer dispose list tracking
xfs: convert dquot cache lru to list_lru
xfs: fix dquot isolation hang
fs: convert fs shrinkers to new scan/count API
drivers: convert shrinkers to new count/scan API
shrinker: convert remaining shrinkers to count/scan API
shrinker: Kill old ->shrink API.

Dave Jones (1):
Add missing unlocks to error paths of mountpoint_last.

Glauber Costa (10):
fs: bump inode and dentry counters to long
super: fix calculation of shrinkable objects for small numbers
inode: move inode to a different list inside lock
list_lru: per-node API
list_lru: remove special case function list_lru_dispose_all.
vmscan: per-node deferred work
i915: bail out earlier when shrinker cannot acquire mutex
hugepage: convert huge zero page shrinker to new shrinker API
list_lru: dynamically adjust node arrays
super: fix for destroy lrus

Peng Tao (4):
staging/lustre/ldlm: convert to shrinkers to count/scan API
staging/lustre/obdclass: convert lu_object shrinker to count/scan API
staging/lustre/ptlrpc: convert to new shrinker API
staging/lustre/libcfs: cleanup linux-mem.h

Diffstat:
Documentation/filesystems/porting | 4 +
arch/x86/kvm/mmu.c | 25 ++-
drivers/gpu/drm/i915/i915_dma.c | 4 +-
drivers/gpu/drm/i915/i915_gem.c | 82 ++++--
drivers/gpu/drm/ttm/ttm_page_alloc.c | 44 ++-
drivers/gpu/drm/ttm/ttm_page_alloc_dma.c | 51 +++--
drivers/md/bcache/btree.c | 43 ++--
drivers/md/bcache/sysfs.c | 2 +-
drivers/md/dm-bufio.c | 64 +++--
drivers/staging/android/ashmem.c | 44 ++-
drivers/staging/android/lowmemorykiller.c | 43 ++--
.../lustre/include/linux/libcfs/linux/linux-mem.h | 38 ---
drivers/staging/lustre/lustre/ldlm/ldlm_pool.c | 148 ++++++-----
drivers/staging/lustre/lustre/obdclass/lu_object.c | 98 ++++---
drivers/staging/lustre/lustre/ptlrpc/sec_bulk.c | 76 +++---
fs/dcache.c | 278 ++++++++++++-------
fs/drop_caches.c | 1 +
fs/ext4/extents_status.c | 33 ++-
fs/gfs2/glock.c | 30 ++-
fs/gfs2/main.c | 3 +-
fs/gfs2/quota.c | 18 +-
fs/gfs2/quota.h | 6 +-
fs/inode.c | 193 ++++++--------
fs/internal.h | 6 +-
fs/mbcache.c | 49 ++--
fs/namei.c | 49 ++--
fs/nfs/dir.c | 16 +-
fs/nfs/internal.h | 6 +-
fs/nfs/super.c | 3 +-
fs/nfsd/nfscache.c | 32 ++-
fs/quota/dquot.c | 34 +--
fs/super.c | 111 +++++---
fs/ubifs/shrinker.c | 29 ++-
fs/ubifs/super.c | 3 +-
fs/ubifs/ubifs.h | 5 +-
fs/xfs/xfs_buf.c | 253 +++++++++--------
fs/xfs/xfs_buf.h | 17 +-
fs/xfs/xfs_dquot.c | 7 +-
fs/xfs/xfs_icache.c | 4 +-
fs/xfs/xfs_icache.h | 2 +-
fs/xfs/xfs_qm.c | 287 ++++++++++---------
fs/xfs/xfs_qm.h | 4 +-
fs/xfs/xfs_super.c | 12 +-
include/linux/dcache.h | 14 +-
include/linux/fs.h | 26 +-
include/linux/list_lru.h | 131 +++++++++
include/linux/shrinker.h | 54 +++-
include/trace/events/vmscan.h | 4 +-
include/uapi/linux/fs.h | 6 +-
kernel/sysctl.c | 6 +-
mm/Makefile | 2 +-
mm/huge_memory.c | 17 +-
mm/list_lru.c | 139 ++++++++++
mm/memory-failure.c | 2 +
mm/vmscan.c | 241 ++++++++++-------
net/sunrpc/auth.c | 41 ++-
56 files changed, 1778 insertions(+), 1162 deletions(-)
create mode 100644 include/linux/list_lru.h
create mode 100644 mm/list_lru.c
--
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/