android_kernel_motorola_sm6225/fs/gfs2
Steven Whitehouse c754fbbb1b GFS2: Use RCU/hlist_bl based hash for quotas
Prior to this patch, GFS2 kept all the quotas for each
super block in a single linked list. This is rather slow
when there are large numbers of quotas.

This patch introduces a hlist_bl based hash table, similar
to the one used for glocks. The initial look up of the quota
is now lockless in the case where it is already cached,
although we still have to take the per quota spinlock in
order to bump the ref count. Either way though, this is a
big improvement on what was there before.

The qd_lock and the per super block list is preserved, for
the time being. However it is intended that since this is no
longer used for its original role, it should be possible to
shrink the number of items on that list in due course and
remove the requirement to take qd_lock in qd_get.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Cc: Abhijith Das <adas@redhat.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2014-01-14 19:27:56 +00:00
..
acl.c
acl.h
aops.c GFS2: No need to invalidate pages for a dio read 2014-01-14 19:20:49 +00:00
bmap.c GFS2: Add allocation parameters structure 2013-10-02 11:13:25 +01:00
bmap.h
dentry.c gfs2: use check_submounts_and_drop() 2013-09-05 16:23:51 -04:00
dir.c GFS2: Add hints to directory leaf blocks 2014-01-08 12:14:57 +00:00
dir.h GFS2: Remember directory insert point 2014-01-06 12:49:43 +00:00
export.c [readdir] constify ->actor 2013-06-29 12:57:05 +04:00
file.c GFS2: Add allocation parameters structure 2013-10-02 11:13:25 +01:00
gfs2.h
glock.c GFS2: Fix unsafe dereference in dump_holder() 2014-01-02 12:18:04 +00:00
glock.h GFS2: Use lockref for glocks 2013-10-15 15:18:08 +01:00
glops.c GFS2: Use only a single address space for rgrps 2014-01-03 10:01:50 +00:00
glops.h
incore.h GFS2: Use RCU/hlist_bl based hash for quotas 2014-01-14 19:27:56 +00:00
inode.c GFS2: Increase i_writecount during gfs2_setattr_chown 2014-01-07 09:43:51 +00:00
inode.h GFS2: Add atomic_open support 2013-06-14 11:17:15 +01:00
Kconfig
lock_dlm.c gfs2: endianness misannotations 2013-11-15 22:04:16 -05:00
log.c GFS2: Fix use-after-free race when calling gfs2_remove_from_ail 2013-12-13 21:42:23 +00:00
log.h GFS2: aggressively issue revokes in gfs2_log_flush 2013-06-19 09:41:59 +01:00
lops.c GFS2: Use only a single address space for rgrps 2014-01-03 10:01:50 +00:00
lops.h
main.c GFS2: Use RCU/hlist_bl based hash for quotas 2014-01-14 19:27:56 +00:00
Makefile
meta_io.c GFS2: Use only a single address space for rgrps 2014-01-03 10:01:50 +00:00
meta_io.h GFS2: Move gfs2_sync_meta to lops.c 2013-08-19 17:26:32 +01:00
ops_fstype.c GFS2: Add initialization for address space in super block 2014-01-09 16:34:04 +00:00
quota.c GFS2: Use RCU/hlist_bl based hash for quotas 2014-01-14 19:27:56 +00:00
quota.h GFS2: Use RCU/hlist_bl based hash for quotas 2014-01-14 19:27:56 +00:00
recovery.c
recovery.h
rgrp.c GFS2: Use range based functions for rgrp sync/invalidation 2014-01-03 10:00:31 +00:00
rgrp.h GFS2: Add allocation parameters structure 2013-10-02 11:13:25 +01:00
super.c GFS2: Clean up reservation removal 2013-09-27 12:49:33 +01:00
super.h
sys.c GFS2: Remove obsolete quota tunable 2013-10-04 09:49:29 +01:00
sys.h
trace_gfs2.h
trans.c GFS2: fix warning message 2013-06-19 21:29:19 +01:00
trans.h
util.c GFS2: Move gfs2_icbit_munge into quota.c 2013-10-02 14:47:02 +01:00
util.h GFS2: Move gfs2_icbit_munge into quota.c 2013-10-02 14:47:02 +01:00
xattr.c GFS2: Add allocation parameters structure 2013-10-02 11:13:25 +01:00
xattr.h