linux/fs/gfs2
Andreas Gruenbacher e3da6be3d7 gfs2: Fix withdraw race
Function gfs2_withdraw() tries to synchronize concurrent callers by
atomically setting the SDF_WITHDRAWN flag in the first caller, setting
the SDF_WITHDRAW_IN_PROG flag to indicate that a withdraw is in
progress, performing the actual withdraw, and clearing the
SDF_WITHDRAW_IN_PROG flag when done.  All other callers wait for the
SDF_WITHDRAW_IN_PROG flag to be cleared before returning.

This leaves a small window in which callers can find the SDF_WITHDRAWN
flag set before the SDF_WITHDRAW_IN_PROG flag has been set, causing them
to return prematurely, before the withdraw has been completed.

Fix that by setting the SDF_WITHDRAWN and SDF_WITHDRAW_IN_PROG flags
atomically.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
2023-09-05 15:58:17 +02:00
..
acl.c fs: port acl to mnt_idmap 2023-01-19 09:24:28 +01:00
acl.h fs: port ->set_acl() to pass mnt_idmap 2023-01-19 09:24:27 +01:00
aops.c gfs2: low-memory forced flush fixes 2023-09-05 15:58:16 +02:00
aops.h gfs2: support ludicrously large folios in gfs2_trans_add_databufs() 2023-06-19 16:19:30 -07:00
bmap.c gfs: Don't use GFP_NOFS in gfs2_unstuff_dinode 2023-09-05 15:58:16 +02:00
bmap.h gfs2: Eliminate gfs2_trim_blocks 2023-04-18 14:40:12 +02:00
dentry.c Reinstate "GFS2: free disk inode which is deleted by remote node -V2" 2023-03-23 19:37:56 +01:00
dir.c gfs2 fixes 2022-08-06 14:44:49 -07:00
dir.h gfs2: Delete an unnecessary check before brelse() 2019-09-04 20:22:17 +02:00
export.c Change calling conventions for filldir_t 2022-08-17 17:25:04 -04:00
file.c gfs2: Don't use filemap_splice_read 2023-08-07 18:42:04 +02:00
gfs2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
glock.c gfs2: Rename SDF_DEACTIVATING to SDF_KILL 2023-09-05 15:58:16 +02:00
glock.h gfs2: Remove LM_FLAG_PRIORITY flag 2023-09-05 15:58:16 +02:00
glops.c gfs2: Rename SDF_DEACTIVATING to SDF_KILL 2023-09-05 15:58:16 +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: Rename SDF_DEACTIVATING to SDF_KILL 2023-09-05 15:58:16 +02:00
inode.c gfs2: Use mapping->gfp_mask for metadata inodes 2023-09-05 15:58:15 +02:00
inode.h fs: port ->permission() to pass mnt_idmap 2023-01-19 09:24:28 +01:00
Kconfig
lock_dlm.c gfs2: Remove LM_FLAG_PRIORITY flag 2023-09-05 15:58:16 +02:00
log.c gfs2: Sanitize kthread stopping 2023-09-05 15:58:17 +02:00
log.h fs/gfs2: Use the enum req_op and blk_opf_t types 2022-07-14 12:14:32 -06:00
lops.c gfs2: Use mapping->gfp_mask for metadata inodes 2023-09-05 15:58:15 +02:00
lops.h fs/gfs2: Use the enum req_op and blk_opf_t types 2022-07-14 12:14:32 -06:00
main.c gfs2: Register fs after creating workqueues 2022-09-20 17:53:54 +02:00
Makefile
meta_io.c gfs2: replace obvious uses of b_page with b_folio 2023-01-18 17:12:40 -08:00
meta_io.h gfs2: Use container_of() for gfs2_glock(aspace) 2022-05-24 21:29:14 +02:00
ops_fstype.c gfs2: Fix asynchronous thread destruction 2023-09-05 15:58:17 +02:00
quota.c gfs2: Sanitize kthread stopping 2023-09-05 15:58:17 +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 sd_freeze_state with SDF_FROZEN flag 2023-07-03 22:30:23 +02:00
recovery.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
rgrp.c gfs2: Update rl_unlinked before releasing rgrp lock 2023-06-06 18:35:06 +02:00
rgrp.h Merge part of branch 'for-next.instantiate' into for-next 2022-08-05 18:37:03 +02:00
super.c gfs2: Fix asynchronous thread destruction 2023-09-05 15:58:17 +02:00
super.h gfs2: Fix asynchronous thread destruction 2023-09-05 15:58:17 +02:00
sys.c gfs2: Rename SDF_DEACTIVATING to SDF_KILL 2023-09-05 15:58:16 +02: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 freeze consistency check in gfs2_trans_add_meta 2023-08-07 18:40:51 +02: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: Fix withdraw race 2023-09-05 15:58:17 +02:00
util.h gfs2: gfs2_freeze_lock_shared cleanup 2023-07-03 22:30:26 +02:00
xattr.c fs: drop unused posix acl handlers 2023-03-06 09:57:12 +01:00
xattr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00