linux-stable/fs/gfs2
Bob Peterson 790829dc62 gfs2: Don't demote a glock until its revokes are written
[ Upstream commit df5db5f9ee ]

Before this patch, run_queue would demote glocks based on whether
there are any more holders. But if the glock has pending revokes that
haven't been written to the media, giving up the glock might end in
file system corruption if the revokes never get written due to
io errors, node crashes and fences, etc. In that case, another node
will replay the metadata blocks associated with the glock, but
because the revoke was never written, it could replay that block
even though the glock had since been granted to another node who
might have made changes.

This patch changes the logic in run_queue so that it never demotes
a glock until its count of pending revokes reaches zero.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-24 08:00:27 +02:00
..
acl.c gfs2: preserve i_mode if __gfs2_set_acl() fails 2017-08-31 07:53:15 -05:00
acl.h
aops.c gfs2: forcibly flush ail to relieve memory pressure 2017-08-10 10:51:03 -05:00
bmap.c gfs2: take jdata unstuff into account in do_grow 2019-12-05 15:37:32 +01:00
bmap.h
dentry.c
dir.c We've got a whopping 29 GFS2 patches for this merge window, mainly 2017-09-06 11:42:31 -07:00
dir.h
export.c
file.c gfs2: Fix fallocate chunk size 2018-05-30 07:52:35 +02:00
gfs2.h
glock.c gfs2: Don't demote a glock until its revokes are written 2020-04-24 08:00:27 +02:00
glock.h
glops.c Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2017-09-14 18:54:01 -07:00
glops.h
incore.h gfs2: Silence gcc format-truncation warning 2017-08-25 10:59:21 -05:00
inode.c gfs2_atomic_open(): fix O_EXCL|O_CREAT handling on cold dcache 2020-03-20 10:54:16 +01:00
inode.h
Kconfig
lock_dlm.c gfs2: Fix sign extension bug in gfs2_update_stats 2019-05-31 06:47:11 -07:00
log.c gfs2: fix glock reference problem in gfs2_trans_remove_revoke 2019-12-17 20:40:01 +01:00
log.h gfs2: fix glock reference problem in gfs2_trans_remove_revoke 2019-12-17 20:40:01 +01:00
lops.c gfs2: fix glock reference problem in gfs2_trans_remove_revoke 2019-12-17 20:40:01 +01:00
lops.h
main.c
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
meta_io.c Merge branch 'for-4.14/block' of git://git.kernel.dk/linux-block 2017-09-07 11:59:42 -07:00
meta_io.h
ops_fstype.c gfs2: Don't leave s_fs_info pointing to freed memory in init_sbd 2018-12-01 09:42:51 +01:00
quota.c Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2017-09-14 18:54:01 -07:00
quota.h gfs2: Fix fallocate chunk size 2018-05-30 07:52:35 +02:00
recovery.c
recovery.h
rgrp.c gfs2: Fix marking bitmaps non-full 2019-12-01 09:13:17 +01:00
rgrp.h
super.c GFS2: Flush the GFS2 delete workqueue before stopping the kernel threads 2019-11-24 08:23:25 +01:00
super.h
sys.c
sys.h
trace_gfs2.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trans.c gfs2: fix glock reference problem in gfs2_trans_remove_revoke 2019-12-17 20:40:01 +01:00
trans.h
util.c
util.h GFS2: Fix up some sparse warnings 2017-08-25 18:47:18 -05:00
xattr.c gfs2: don't return ENODATA in __gfs2_xattr_set unless replacing 2017-08-31 07:43:03 -05:00
xattr.h