linux/fs/gfs2
Steven Whitehouse 64d576ba23 GFS2: Add a "demote a glock" interface to sysfs
This adds a sysfs file called demote_rq to GFS2's
per filesystem directory. Its possible to use this
file to demote arbitrary glocks in exactly the same
way as if a request had come in from a remote node.

This is intended for testing issues relating to caching
of data under glocks. Despite that, the interface is
generic enough to send requests to any type of glock,
but be careful as its not always safe to send an
arbitrary message to an arbitrary glock. For that reason
and to prevent DoS, this interface is restricted to root
only.

The messages look like this:

<type>:<glocknumber> <mode>

Example:

echo -n "2:13324 EX" >/sys/fs/gfs2/unity:myfs/demote_rq

Which means "please demote inode glock (type 2) number 13324 so that
I can get an EX (exclusive) lock". The lock modes are those which
would normally be sent by a remote node in its callback so if you
want to unlock a glock, you use EX, to demote to shared, use SH or PR
(depending on whether you like GFS2 or DLM lock modes better!).

If the glock doesn't exist, you'll get -ENOENT returned. If the
arguments don't make sense, you'll get -EINVAL returned.

The plan is that this interface will be used in combination with
the blktrace patch which I recently posted for comments although
it is, of course, still useful in its own right.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
2009-03-24 11:21:22 +00:00
..
acl.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
acl.h [GFS2] Remove gfs2_check_acl() 2006-11-30 10:37:32 -05:00
bmap.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
bmap.h GFS2: Streamline alloc calculations for writes 2009-01-05 07:39:17 +00:00
dir.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
dir.h GFS2: Fix bug in gfs2_lock_fs_check_clean() 2009-01-05 07:39:11 +00:00
eaops.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
eaops.h [GFS2] mark struct *_operations const 2007-10-10 08:55:03 +01:00
eattr.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
eattr.h [GFS2] gfs2 misc endianness annotations 2006-11-30 10:33:46 -05:00
gfs2.h [GFS2] Remove remote lock dropping code 2008-06-27 09:39:44 +01:00
glock.c GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
glock.h GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
glops.c GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
glops.h GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
incore.h GFS2: Expose UUID via sysfs/uevent 2009-03-24 11:21:21 +00:00
inode.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
inode.h GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
Kconfig GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
lock_dlm.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
log.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
log.h [GFS2] trivial sparse lock annotations 2008-06-27 09:39:31 +01:00
lops.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
lops.h [GFS2] Only do lo_incore_commit once 2008-03-31 10:39:54 +01:00
main.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
Makefile GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
meta_io.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
meta_io.h [GFS2] Clean up the glock core 2008-06-27 09:39:22 +01:00
mount.c GFS2: Support generation of discard requests 2009-03-24 11:21:20 +00:00
ops_address.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
ops_address.h [GFS2] Remove function gfs2_get_block 2008-01-25 08:08:25 +00:00
ops_dentry.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
ops_export.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
ops_file.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
ops_fstype.c GFS2: Expose UUID via sysfs/uevent 2009-03-24 11:21:21 +00:00
ops_inode.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
ops_super.c GFS2: Support generation of discard requests 2009-03-24 11:21:20 +00:00
quota.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
quota.h GFS2: change gfs2_quota_scan into a shrinker 2009-03-24 11:21:12 +00:00
recovery.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
recovery.h GFS2: Move gfs2_recoverd into recovery.c 2009-01-05 07:39:07 +00:00
rgrp.c GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
rgrp.h [GFS2] Add extent allocation to block allocator 2008-03-31 10:40:47 +01:00
super.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
super.h GFS2: Fix remount argument parsing 2009-03-24 11:21:10 +00:00
sys.c GFS2: Add a "demote a glock" interface to sysfs 2009-03-24 11:21:22 +00:00
sys.h GFS2: Remove ancient, unused code 2009-01-05 07:39:13 +00:00
trans.c GFS2: Fix deadlock on journal flush 2009-03-24 11:21:18 +00:00
trans.h [GFS2] Update gfs2_trans_add_unrevoke to accept extents 2008-03-31 10:40:42 +01:00
util.c GFS2: Merge lock_dlm module into GFS2 2009-03-24 11:21:14 +00:00
util.h GFS2: Clean up & move gfs2_quotad 2009-01-05 07:39:05 +00:00