kernel_optimize_test/fs/gfs2
Bob Peterson 6a2e275834 gfs2: use i_lock spin_lock for inode qadata
[ Upstream commit 5fcff61eea9efd1f4b60e89d2d686b5feaea100f ]

Before this patch, functions gfs2_qa_get and _put used the i_rw_mutex to
prevent simultaneous access to its i_qadata. But i_rw_mutex is now used
for many other things, including iomap_begin and end, which causes a
conflict according to lockdep. We cannot just remove the lock since
simultaneous opens (gfs2_open -> gfs2_open_common -> gfs2_qa_get) can
then stomp on each others values for i_qadata.

This patch solves the conflict by using the i_lock spin_lock in the inode
to prevent simultaneous access.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-09 10:20:57 +02:00
..
acl.c
acl.h
aops.c gfs2: Fix case in which ail writes are done to jdata holes 2020-11-12 18:55:20 +01:00
aops.h
bmap.c gfs2: Fix filesystem block deallocation for short writes 2022-05-18 10:23:45 +02:00
bmap.h gfs2: use iomap for buffered I/O in ordered and writeback mode 2020-10-14 23:54:42 +02:00
dentry.c
dir.c
dir.h
export.c
file.c gfs2: Disable page faults during lockless buffered reads 2022-05-25 09:17:53 +02:00
gfs2.h
glock.c gfs2: Fix glock_hash_walk bugs 2021-11-18 14:04:00 +01:00
glock.h
glops.c gfs2: Fix glock recursion in freeze_go_xmote_bh 2021-09-18 13:40:25 +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: set lockdep subclass for iopen glocks 2020-11-24 23:45:58 +01:00
inode.c gfs2: gfs2_setattr_size error path fix 2022-04-13 21:00:54 +02:00
inode.h
Kconfig
lock_dlm.c gfs2: Don't call dlm after protocol is unmounted 2021-09-18 13:40:30 +02:00
log.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
log.h gfs2: Wipe jdata and ail1 in gfs2_journal_wipe, formerly gfs2_meta_wipe 2020-10-15 14:29:03 +02:00
lops.c treewide: Change list_sort to use const pointers 2021-09-30 10:11:04 +02:00
lops.h gfs2: Split up gfs2_meta_sync into inode and rgrp versions 2020-10-29 22:16:46 +01:00
main.c
Makefile
meta_io.c gfs2: Wipe jdata and ail1 in gfs2_journal_wipe, formerly gfs2_meta_wipe 2020-10-15 14:29:03 +02:00
meta_io.h gfs2: Wipe jdata and ail1 in gfs2_journal_wipe, formerly gfs2_meta_wipe 2020-10-15 14:29:03 +02:00
ops_fstype.c gfs2: init system threads before freeze lock 2021-09-15 09:50:42 +02:00
quota.c gfs2: use i_lock spin_lock for inode qadata 2022-06-09 10:20:57 +02:00
quota.h
recovery.c gfs2: Add common helper for holding and releasing the freeze glock 2021-03-25 09:04:14 +01:00
recovery.h
rgrp.c gfs2: assign rgrp glock before compute_bitstructs 2022-04-27 13:53:46 +02:00
rgrp.h gfs2: gfs2_setattr_size error path fix 2022-04-13 21:00:54 +02:00
super.c gfs2: gfs2_setattr_size error path fix 2022-04-13 21:00:54 +02:00
super.h gfs2: lookup local statfs inodes prior to journal recovery 2020-10-23 15:47:14 +02:00
sys.c gfs2: use-after-free in sysfs deregistration 2020-10-14 23:54:43 +02:00
sys.h
trace_gfs2.h gfs2: eliminate GLF_QUEUED flag in favor of list_empty(gl_holders) 2020-10-15 17:04:53 +02:00
trans.c gfs2: fix use-after-free in trans_drain 2021-03-30 14:31:49 +02:00
trans.h
util.c gfs2: bypass signal_our_withdraw if no journal 2021-03-25 09:04:14 +01:00
util.h gfs2: Add common helper for holding and releasing the freeze glock 2021-03-25 09:04:14 +01:00
xattr.c
xattr.h