linux-stable/fs/gfs2
Bob Peterson 0befb8511e gfs2: do_promote glock holder stealing fix
In do_promote(), when the glock had no strong holders, we were
accidentally calling demote_incompat_holders() with new_gh == NULL, so
no weak holders were considered incompatible.  Instead, the new holder
should have been passed in.

For doing that, the HIF_HOLDER flag needs to be set in new_gh to prevent
may_grant() from complaining.  This means that the new holder will now
be recognized as a current holder, so skip over it explicitly in
demote_incompat_holders() to prevent it from being dequeued.

To further clarify things, we can now rename new_gh to current_gh in
demote_incompat_holders(); after all, the HIF_HOLDER flag is already set,
which means the new holder is already a current holder.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
2022-06-29 17:00:55 +02:00
..
acl.c vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
acl.h vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
aops.c fs: Change try_to_free_buffers() to take a folio 2022-05-09 23:12:34 -04:00
aops.h gfs2: mark stuffed_readpage static 2019-07-03 14:45:18 +02:00
bmap.c gfs2: Fix filesystem block deallocation for short writes 2022-05-13 21:59:18 +02:00
bmap.h gfs2: Clean up gfs2_unstuff_dinode 2021-06-29 10:56:51 +02:00
dentry.c gfs2: untangle the logic in gfs2_drevalidate 2019-09-03 09:42:41 +02:00
dir.c gfs2: Clean up gfs2_unstuff_dinode 2021-06-29 10:56:51 +02:00
dir.h gfs2: Delete an unnecessary check before brelse() 2019-09-04 20:22:17 +02:00
export.c gfs2: Minor gfs2_lookup_by_inum cleanup 2020-06-05 20:19:21 +02:00
file.c gfs2 fixes 2022-05-24 19:00:41 -07:00
gfs2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
glock.c gfs2: do_promote glock holder stealing fix 2022-06-29 17:00:55 +02:00
glock.h gfs2: Revert 'Fix "truncate in progress" hang' 2022-06-29 16:54:59 +02:00
glops.c gfs2: Make go_instantiate take a glock 2022-06-29 16:59:07 +02:00
glops.h gfs2: Split up gfs2_meta_sync into inode and rgrp versions 2020-10-29 22:16:46 +01:00
incore.h gfs2: Make go_instantiate take a glock 2022-06-29 16:59:07 +02:00
inode.c gfs2: Switch lock order of inode and iopen glock 2022-02-15 15:01:40 +01:00
inode.h gfs2: Convert to release_folio 2022-05-09 23:12:33 -04:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
lock_dlm.c gfs2: Expect -EBUSY after canceling dlm locking requests 2022-02-15 15:01:40 +01:00
log.c gfs2: tiny cleanup in gfs2_log_reserve 2021-08-19 12:31:17 -05:00
log.h gfs2: Clean up revokes on normal withdraws 2021-05-20 13:31:37 +02:00
lops.c block: remove the per-bio/request write hint 2022-03-07 12:45:57 -07:00
lops.h gfs2: Clean up revokes on normal withdraws 2021-05-20 13:31:37 +02:00
main.c gfs2: Revert 'Fix "truncate in progress" hang' 2022-06-29 16:54:59 +02:00
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 gfs2: Convert to release_folio 2022-05-09 23:12:33 -04:00
meta_io.h gfs2: Use container_of() for gfs2_glock(aspace) 2022-05-24 21:29:14 +02:00
ops_fstype.c gfs2: Revert 'Fix "truncate in progress" hang' 2022-06-29 16:54:59 +02:00
quota.c gfs2: Revert 'Fix "truncate in progress" hang' 2022-06-29 16:54:59 +02:00
quota.h gfs2: move privileged user check to gfs2_quota_lock_check 2020-05-08 18:47:58 +02:00
recovery.c gfs2: replace 'found' with dedicated list iterator variable 2022-05-14 03:05:55 +02:00
recovery.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
rgrp.c gfs2: Make go_instantiate take a glock 2022-06-29 16:59:07 +02:00
rgrp.h gfs2: Make go_instantiate take a glock 2022-06-29 16:59:07 +02:00
super.c gfs2: Instantiate glocks ouside of glock state engine 2022-06-29 16:53:22 +02:00
super.h gfs2: Don't release and reacquire local statfs bh 2021-08-20 09:03:46 -05:00
sys.c block: remove genhd.h 2022-02-02 07:49:59 -07:00
sys.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
trace_gfs2.h gfs2: Remove 'first' trace_gfs2_promote argument 2021-10-25 08:42:19 +02:00
trans.c gfs2: fix use-after-free in trans_drain 2021-03-07 17:04:55 +01:00
trans.h Merge branches 'rgrp-glock-sharing' and 'gfs2-revoke' from https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git 2021-02-23 18:54:22 +01:00
util.c gfs2: dump glocks from gfs2_consist_OBJ_i 2021-10-25 08:42:18 +02:00
util.h gfs2: don't stop reads while withdraw in progress 2021-08-20 09:03:46 -05:00
xattr.c gfs2: Fix a number of kernel-doc warnings 2021-04-09 22:14:13 +02:00
xattr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00