2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-11-20 00:26:39 +08:00
linux-next/fs/ocfs2
Sunil Mushran 539d826409 [PATCH 2/2] ocfs2: Fix race between mount and recovery
As the fs recovery is asynchronous, there is a small chance that another
node can mount (and thus recover) the slot before the recovery thread
gets to it.

If this happens, the recovery thread will block indefinitely on the
journal/slot lock as that lock will be held for the duration of the mount
(by design) by the node assigned to that slot.

The solution implemented is to keep track of the journal replays using
a recovery generation in the journal inode, which will be incremented by the
thread replaying that journal. The recovery thread, before attempting the
blocking lock on the journal/slot lock, will compare the generation on disk
with what it has cached and skip recovery if it does not match.

This bug appears to have been inadvertently introduced during the mount/umount
vote removal by mainline commit 34d024f843. In the
mount voting scheme, the messaging would indirectly indicate that the slot
was being recovered.

Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
2008-07-31 16:21:14 -07:00
..
cluster configfs: Allow ->make_item() and ->make_group() to return detailed errors. 2008-07-17 15:21:29 -07:00
dlm SL*B: drop kmem cache argument from constructor 2008-07-26 12:00:07 -07:00
alloc.c ocfs2 endianness fixes 2008-05-21 16:55:59 -07:00
alloc.h ocfs2: Write support for directories with inline data 2007-10-12 11:54:41 -07:00
aops.c [PATCH] ocfs2: fix oops in mmap_truncate testing 2008-07-16 16:13:04 -07:00
aops.h ocfs2: convert to new aops 2007-10-16 09:42:58 -07:00
buffer_head_io.c ocfs2: clean up bh null checks 2008-01-25 15:05:48 -08:00
buffer_head_io.h [PATCH 1/2] ocfs2: Add group extend for online resize 2008-01-25 14:53:35 -08:00
dcache.c ocfs2: Remove mount/unmount votes 2008-01-25 14:45:34 -08:00
dcache.h ocfs2: Remove special casing for inode creation in ocfs2_dentry_attach_lock() 2006-09-24 13:50:45 -07:00
dir.c [PATCH] ocfs2: le*_add_cpu conversion 2008-03-03 15:50:21 -08:00
dir.h ocfs2: Rename cleanups 2007-10-12 11:54:38 -07:00
dlmglue.c ocfs2: fix printk format warnings with OCFS2_FS_STATS=n 2008-07-14 13:57:14 -07:00
dlmglue.h ocfs2: Break out stackglue into modules. 2008-04-18 08:56:05 -07:00
export.c ocfs2: Silence false lockdep warnings 2008-01-25 15:05:44 -08:00
export.h exportfs: make struct export_operations const 2007-10-22 08:13:21 -07:00
extent_map.c ocfs2: Read support for inline data 2007-10-12 11:54:39 -07:00
extent_map.h ocfs2: Cache extent records 2007-04-26 15:10:40 -07:00
file.c [PATCH] sanitize ->permission() prototype 2008-07-26 20:53:14 -04:00
file.h [PATCH] sanitize ->permission() prototype 2008-07-26 20:53:14 -04: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: convert byte order of constant instead of variable 2008-01-25 15:05:46 -08:00
inode.h ocfs2: Silence false lockdep warnings 2008-01-25 15:05:44 -08:00
ioctl.c [PATCH] r/o bind mounts: elevate write count for ioctls() 2008-04-19 00:29:24 -04:00
ioctl.h ocfs2: Convert ocfs2 over to unlocked_ioctl 2008-04-18 08:56:11 -07:00
journal.c [PATCH 2/2] ocfs2: Fix race between mount and recovery 2008-07-31 16:21:14 -07:00
journal.h [PATCH 2/2] ocfs2: Fix race between mount and recovery 2008-07-31 16:21:14 -07:00
localalloc.c ocfs2: Fix CONFIG_OCFS2_DEBUG_FS #ifdefs 2008-07-14 13:57:15 -07:00
localalloc.h ocfs2: Allow smaller allocations during large writes 2007-09-20 15:06:09 -07:00
locks.c [PATCH 2/2] ocfs2: cluster aware flock() 2008-01-25 15:05:43 -08:00
locks.h [PATCH 2/2] ocfs2: cluster aware flock() 2008-01-25 15:05:43 -08:00
Makefile ocfs2: Allow selection of cluster plug-ins. 2008-04-18 08:56:07 -07:00
mmap.c ocfs2: Rename ocfs2_meta_[un]lock 2008-01-25 14:46:01 -08:00
mmap.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
namei.c ocfs2: Improve rename locking 2008-04-18 08:56:11 -07:00
namei.h ocfs2: Move directory manipulation code into dir.c 2007-10-12 11:54:36 -07:00
ocfs1_fs_compat.h fs/: Spelling fixes 2008-02-03 17:33:42 +02:00
ocfs2_fs.h [PATCH 1/2] ocfs2: Add counter in struct ocfs2_dinode to track journal replays 2008-07-31 16:21:13 -07:00
ocfs2_lockid.h ocfs2: Change mlog_bug_on to BUG_ON in ocfs2_lockid.h 2008-04-18 08:56:07 -07:00
ocfs2_lockingver.h ocfs2: Negotiate locking protocol versions. 2008-02-06 16:11:29 -08:00
ocfs2.h [PATCH 2/2] ocfs2: Fix race between mount and recovery 2008-07-31 16:21:14 -07:00
resize.c ocfs2: Fix an endian bug in online resize. 2008-03-10 15:14:07 -07:00
resize.h [PATCH 2/2] ocfs2: Implement group add for online resize 2008-01-25 15:04:24 -08:00
slot_map.c ocfs2: Abstract out node number queries. 2008-04-18 08:56:04 -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: Remove ->hangup() from stack glue operations. 2008-06-16 10:46:52 -07:00
stack_user.c Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 2008-07-17 10:55:51 -07:00
stackglue.c ocfs2: Remove ->hangup() from stack glue operations. 2008-06-16 10:46:52 -07:00
stackglue.h ocfs2: Remove ->hangup() from stack glue operations. 2008-06-16 10:46:52 -07:00
suballoc.c ocfs2: Add inode stealing for ocfs2_reserve_new_inode 2008-04-18 08:56:10 -07:00
suballoc.h ocfs2: Add ac_alloc_slot in ocfs2_alloc_context 2008-04-18 08:56:10 -07:00
super.c [PATCH 2/2] ocfs2: Fix race between mount and recovery 2008-07-31 16:21:14 -07:00
super.h ocfs2: use s_maxbytes directly in ocfs2_change_file_space() 2007-08-09 17:25:07 -07:00
symlink.c ocfs2: Allow uid/gid/perm changes of symlinks 2008-04-30 17:09:54 -07:00
symlink.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
sysfile.c ocfs2: Silence false lockdep warnings 2008-01-25 15:05:44 -08:00
sysfile.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
uptodate.c mm: Remove slab destructors from kmem_cache_create(). 2007-07-20 10:11:58 +09:00
uptodate.h ocfs2: implement directory read-ahead 2006-09-20 15:53:40 -07:00
ver.c ocfs2: bump version number 2008-01-25 15:05:46 -08:00
ver.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00