From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751679Ab2HVC0x (ORCPT ); Tue, 21 Aug 2012 22:26:53 -0400 Received: from mail-ob0-f174.google.com ([209.85.214.174]:43131 "EHLO mail-ob0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750799Ab2HVC0v (ORCPT ); Tue, 21 Aug 2012 22:26:51 -0400 From: Sasha Levin To: torvalds@linux-foundation.org Cc: tj@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, paul.gortmaker@windriver.com, davem@davemloft.net, rostedt@goodmis.org, mingo@elte.hu, ebiederm@xmission.com, aarcange@redhat.com, ericvh@gmail.com, netdev@vger.kernel.org, josh@joshtriplett.org, eric.dumazet@gmail.com, mathieu.desnoyers@efficios.com, axboe@kernel.dk, agk@redhat.com, dm-devel@redhat.com, neilb@suse.de, ccaulfie@redhat.com, teigland@redhat.com, Trond.Myklebust@netapp.com, bfields@fieldses.org, fweisbec@gmail.com, jesse@nicira.com, venkat.x.venkatsubra@oracle.com, ejt@redhat.com, snitzer@redhat.com, edumazet@google.com, linux-nfs@vger.kernel.org, dev@openvswitch.org, rds-devel@oss.oracle.com, lw@cn.fujitsu.com, Sasha Levin Subject: [PATCH v3 00/17] generic hashtable implementation Date: Wed, 22 Aug 2012 04:26:55 +0200 Message-Id: <1345602432-27673-1-git-send-email-levinsasha928@gmail.com> X-Mailer: git-send-email 1.7.8.6 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org There are quite a few places in the kernel which implement a hashtable in a very similar way. Instead of having implementations of a hashtable all over the kernel, we can re-use the code. Since it looks like all the major issues we're addressed in the RFC phase and no major issues were raised with this patch set, I'd be happy to see this getting merged so that work could continue on different aspects of the hashtable. Some interesting directions include: - Introducing a dynamic RCU hashtable such as the one Mathieu Desnoyers wrote about out in the userspace RCU. - Replacing the rest of the the kernel structures which use the same basec hashtable construct to use this new interface. - Same as above, but for non-obvious places (for example, I'm looking into using the hashtable to store KVM vcpus instead of the linked list being used there now - this should help performance with a large amount of vcpus). Changes since v2: - Documentation improvements from Mathieu Desnoyers. - Converted the SUNRPC audit code to use hashtables as well. Since that code requires a dynamic hashtable this shows off the _size() API usage. Changes since v1: - Added missing hash_init in rds and lockd. - Addressed the userns comments by Eric Biederman. - Ran a small test to confirm hash_32 does a good job for low key values (1-10000), which showed it did - this resulted in no changes to the code. Sasha Levin (17): hashtable: introduce a small and naive hashtable userns: use new hashtable implementation mm,ksm: use new hashtable implementation workqueue: use new hashtable implementation mm/huge_memory: use new hashtable implementation tracepoint: use new hashtable implementation net,9p: use new hashtable implementation block,elevator: use new hashtable implementation SUNRPC/cache: use new hashtable implementation dlm: use new hashtable implementation net,l2tp: use new hashtable implementation dm: use new hashtable implementation lockd: use new hashtable implementation net,rds: use new hashtable implementation openvswitch: use new hashtable implementation tracing output: use new hashtable implementation SUNRPC: use new hashtable implementation in auth block/blk.h | 2 +- block/elevator.c | 23 +-- drivers/md/dm-snap.c | 24 +-- drivers/md/persistent-data/dm-block-manager.c | 1 - .../persistent-data/dm-persistent-data-internal.h | 19 -- .../md/persistent-data/dm-transaction-manager.c | 30 +-- fs/dlm/lowcomms.c | 47 +--- fs/lockd/svcsubs.c | 66 +++-- include/linux/elevator.h | 5 +- include/linux/hashtable.h | 291 ++++++++++++++++++++ kernel/trace/trace_output.c | 20 +- kernel/tracepoint.c | 27 +- kernel/user.c | 33 +-- kernel/workqueue.c | 86 +----- mm/huge_memory.c | 57 +--- mm/ksm.c | 33 +-- net/9p/error.c | 21 +- net/l2tp/l2tp_core.c | 134 ++++------ net/l2tp/l2tp_core.h | 8 +- net/l2tp/l2tp_debugfs.c | 19 +- net/openvswitch/vport.c | 30 +-- net/rds/bind.c | 28 ++- net/rds/connection.c | 102 +++---- net/sunrpc/auth.c | 45 ++-- net/sunrpc/cache.c | 20 +- 25 files changed, 617 insertions(+), 554 deletions(-) delete mode 100644 drivers/md/persistent-data/dm-persistent-data-internal.h create mode 100644 include/linux/hashtable.h -- 1.7.8.6