linux-stable/fs/gfs2
Steven Whitehouse e66cf16109 GFS2: Use lockref for glocks
Currently glocks have an atomic reference count and also a spinlock
which covers various internal fields, such as the state. This intent of
this patch is to replace the spinlock and the atomic reference count
with a lockref structure. This contains a spinlock which we can continue
to use as before, and a reference counter which is used in conjuction
with the spinlock to replace the previous atomic counter.

As a result of this there are some new rules for reference counting on
glocks. We need to distinguish between reference count changes under
gl_spin (which are now just increment or decrement of the new counter,
provided the count cannot hit zero) and those which are outside of
gl_spin, but which now take gl_spin internally.

The conversion is relatively straight forward. There is probably some
further clean up which can be done, but the priority at this stage is to
make the change in as simple a manner as possible.

A consequence of this change is that the reference count is being
decoupled from the lru list processing. This should allow future
adoption of the lru_list code with glocks in due course.

The reason for using the "dead" state and not just relying on 0 being
the "invalid state" is so that in due course 0 ref counts can be
allowable. The intent is to eventually be able to remove the ref count
changes which are currently hidden away in state_change().

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2013-10-15 15:18:08 +01:00
..
acl.c gfs2: Use uid_eq and gid_eq where appropriate 2013-02-13 06:15:10 -08:00
acl.h fs: take the ACL checks to common code 2011-07-25 14:30:23 -04:00
aops.c GFS2: Add allocation parameters structure 2013-10-02 11:13:25 +01:00
bmap.c GFS2: Add allocation parameters structure 2013-10-02 11:13:25 +01:00
bmap.h GFS2: New truncate sequence 2010-09-20 11:18:16 +01:00
dentry.c gfs2: use check_submounts_and_drop() 2013-09-05 16:23:51 -04:00
dir.c treewide: Add __GFP_NOWARN to k.alloc calls with v.alloc fallbacks 2013-08-20 13:06:40 +02:00
dir.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw 2013-07-02 09:41:18 -07: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: Use lockref for glocks 2013-10-15 15:18:08 +01:00
glock.h GFS2: Use lockref for glocks 2013-10-15 15:18:08 +01:00
glops.c GFS2: Use lockref for glocks 2013-10-15 15:18:08 +01:00
glops.h GFS2: Fix AIL flush issue during fsync 2011-10-21 12:39:41 +01:00
incore.h GFS2: Use lockref for glocks 2013-10-15 15:18:08 +01:00
inode.c GFS2: Add allocation parameters structure 2013-10-02 11:13:25 +01:00
inode.h GFS2: Add atomic_open support 2013-06-14 11:17:15 +01:00
Kconfig Finally eradicate CONFIG_HOTPLUG 2013-06-03 14:20:18 -07:00
lock_dlm.c GFS2: use memchr_inv 2013-04-04 09:52:50 +01:00
log.c GFS2: aggressively issue revokes in gfs2_log_flush 2013-06-19 09:41:59 +01:00
log.h GFS2: aggressively issue revokes in gfs2_log_flush 2013-06-19 09:41:59 +01:00
lops.c GFS2: Move gfs2_sync_meta to lops.c 2013-08-19 17:26:32 +01:00
lops.h GFS2: Eliminate gfs2_rg_lops 2013-06-05 09:50:40 +01:00
main.c fs: convert fs shrinkers to new scan/count API 2013-09-10 18:56:31 -04:00
Makefile GFS2: Rename ops_inode.c to inode.c 2011-05-10 13:12:49 +01:00
meta_io.c GFS2: Move gfs2_sync_meta to lops.c 2013-08-19 17:26:32 +01:00
meta_io.h GFS2: Move gfs2_sync_meta to lops.c 2013-08-19 17:26:32 +01:00
ops_fstype.c GFS2: Protect quota sync generation 2013-10-04 12:29:34 +01:00
quota.c GFS2: Protect quota sync generation 2013-10-04 12:29:34 +01:00
quota.h fs: convert fs shrinkers to new scan/count API 2013-09-10 18:56:31 -04:00
recovery.c GFS2: fail mount if journal recovery fails 2012-01-11 09:24:48 +00:00
recovery.h gfs2: use workqueue instead of slow-work 2010-07-23 13:14:25 +02:00
rgrp.c GFS2: Speed up starting point selection for block allocation 2013-10-02 14:42:45 +01: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 GFS2: Clean up freeze code 2013-01-29 10:29:05 +00:00
sys.c GFS2: Remove obsolete quota tunable 2013-10-04 09:49:29 +01:00
sys.h GFS2: dlm based recovery coordination 2012-01-11 09:23:05 +00:00
trace_gfs2.h GFS2: Add origin indicator to glock demote tracing 2013-04-10 10:32:05 +01:00
trans.c GFS2: fix warning message 2013-06-19 21:29:19 +01:00
trans.h GFS2: Split gfs2_trans_add_bh() into two 2013-01-29 10:28:04 +00:00
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 sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00