linux/fs/ocfs2
Joel Becker 65b6f34034 ocfs2_dlmfs: Use poll() to signify BASTs.
o2dlm's userspace filesystem is an easy way to use the DLM from
userspace.  It is intentionally simple. For example, it does not allow
for asynchronous behavior or lock conversion.  This is intentional to
keep the interface simple.

Because there is no asynchronous notification, there is no way for a
process holding a lock to know another node needs the lock.  This is the
number one complaint of ocfs2_dlmfs users.  Turns out, we can solve this
very easily.  We add poll() support to ocfs2_dlmfs.  When a BAST is
received, the lock's file descriptor will receive POLLIN.

This is trivial to implement.  Userdlm already has an appropriate
waitqueue, and the lock knows when it is blocked.

We add the "bast" capability to tell userspace this is available.

Signed-off-by: Joel Becker <joel.becker@oracle.com>
Acked-by: Mark Fasheh <mfasheh@suse.com>

Signed-off-by: Joel Becker <joel.becker@oracle.com>
2010-02-26 15:41:14 -08:00
..
cluster ocfs2: Add current->comm in trace output 2010-02-26 15:41:08 -08:00
dlm ocfs2_dlmfs: Use poll() to signify BASTs. 2010-02-26 15:41:14 -08:00
acl.c Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 2009-12-24 12:59:11 -08:00
acl.h ocfs2: Always include ACL support 2009-10-28 23:05:57 -07:00
alloc.c ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
alloc.h ocfs2: Find proper end cpos for a leaf refcount block. 2009-12-02 16:14:57 -08:00
aops.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
aops.h ocfs2: Add CoW support. 2009-09-22 20:09:36 -07:00
blockcheck.c tree-wide: fix typos "offest" -> "offset" 2009-12-04 15:39:50 +01:00
blockcheck.h ocfs2: Add statistics for the checksum and ecc operations. 2009-06-03 19:15:36 -07:00
buffer_head_io.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
buffer_head_io.h ocfs2: Take the inode out of the metadata read/write paths. 2009-09-04 16:07:48 -07:00
dcache.c ocfs2: invalidate dentry if its dentry_lock isn't initialized. 2009-08-27 18:10:54 -07:00
dcache.h ocfs2: Fix deadlock on umount 2009-07-21 15:47:55 -07:00
dir.c ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
dir.h ocfs2: Introduce dir free space list 2009-04-03 11:39:16 -07:00
dlmglue.c ocfs2: Plugs race between the dc thread and an unlock ast message 2010-02-03 17:26:03 -08:00
dlmglue.h ocfs2: Add new refcount tree lock resource in dlmglue. 2009-09-22 20:09:28 -07:00
export.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
export.h
extent_map.c ocfs2: Fix contiguousness check in ocfs2_try_to_merge_extent_map() 2010-02-05 15:06:21 -08:00
extent_map.h ocfs2: Return extent flags for xattr value tree. 2009-09-22 20:09:39 -07:00
file.c ocfs2: Clean up the checks for CoW and direct I/O. 2010-02-26 15:41:07 -08:00
file.h ocfs2: Integrate CoW in file write. 2009-09-22 20:09:37 -07:00
heartbeat.c ocfs2: Move o2hb functionality into the stack glue. 2008-04-18 08:56:04 -07:00
heartbeat.h ocfs2: Move o2hb functionality into the stack glue. 2008-04-18 08:56:04 -07:00
inode.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
inode.h ocfs2: Drop struct inode from ocfs2_extent_tree_operations. 2009-09-04 16:07:57 -07:00
ioctl.c ocfs2: Use compat_ptr in reflink_arguments. 2010-02-02 18:56:37 -08:00
ioctl.h ocfs2: Convert ocfs2 over to unlocked_ioctl 2008-04-18 08:56:11 -07:00
journal.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
journal.h ocfs2: Decrement refcount when truncating refcounted extents. 2009-09-22 20:09:35 -07:00
Kconfig ocfs2: Always include ACL support 2009-10-28 23:05:57 -07:00
localalloc.c ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
localalloc.h ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
locks.c ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
locks.h ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
Makefile ocfs2: Always include ACL support 2009-10-28 23:05:57 -07:00
mmap.c const: mark struct vm_struct_operations 2009-09-27 11:39:25 -07:00
mmap.h
namei.c Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 2009-12-24 12:59:11 -08:00
namei.h ocfs2: Create reflinked file in orphan dir. 2009-09-22 20:09:48 -07:00
ocfs1_fs_compat.h
ocfs2.h ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
ocfs2_fs.h ocfs2: Sync max_inline_data_with_xattr from tools. 2010-01-25 19:20:45 -08:00
ocfs2_lockid.h ocfs2: Add new refcount tree lock resource in dlmglue. 2009-09-22 20:09:28 -07:00
ocfs2_lockingver.h
quota.h quota: Move definition of QFMT_OCFS2 to linux/quota.h 2009-12-10 15:02:53 +01:00
quota_global.c Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 2009-09-23 09:29:20 -07:00
quota_local.c const: struct quota_format_ops 2009-12-10 15:02:51 +01:00
refcounttree.c ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
refcounttree.h ocfs2: Add ioctl for reflink. 2009-09-22 20:09:51 -07:00
resize.c ocfs2: Pass struct ocfs2_caching_info to the journal functions. 2009-09-04 16:07:50 -07:00
resize.h
slot_map.c ocfs2: Take the inode out of the metadata read/write paths. 2009-09-04 16:07:48 -07:00
slot_map.h ocfs2: De-magic the in-memory slot map. 2008-04-18 08:56:03 -07:00
stack_o2cb.c ocfs2: fix a misleading variable name 2010-01-25 19:20:48 -08:00
stack_user.c ocfs2: explicit declare uninitialized var in user_cluster_connect() 2009-12-17 20:55:52 -08:00
stackglue.c sysctl: Drop & in front of every proc_handler. 2009-11-18 08:37:40 -08:00
stackglue.h ocfs2: Provide the ocfs2_dlm_lvb_valid() stack API. 2009-06-22 14:24:30 -07:00
suballoc.c ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
suballoc.h ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
super.c ocfs2: add extent block stealing for ocfs2 v5 2010-02-26 15:41:07 -08:00
super.h
symlink.c ocfs2: Fix refcnt leak on ocfs2_fast_follow_link() error path 2010-01-11 15:38:50 -08:00
symlink.h
sysfile.c ocfs2/trivial: Wrap ocfs2_sysfile_cluster_lock_key within define. 2009-06-22 14:34:29 -07:00
sysfile.h
uptodate.c ocfs2/trivial: Remove trailing whitespaces 2010-01-25 19:20:51 -08:00
uptodate.h ocfs2: Pass struct ocfs2_caching_info to the journal functions. 2009-09-04 16:07:50 -07:00
ver.c
ver.h
xattr.c ocfs2: Handle errors while setting external xattr values. 2010-02-26 15:41:13 -08:00
xattr.h ocfs2: Always include ACL support 2009-10-28 23:05:57 -07:00