]> git.baikalelectronics.ru Git - kernel.git/commit
gfs2: use i_lock spin_lock for inode qadata
authorBob Peterson <rpeterso@redhat.com>
Fri, 11 Feb 2022 15:50:08 +0000 (10:50 -0500)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 24 May 2022 19:29:14 +0000 (21:29 +0200)
commit6eb6198fd1b7a2bdb360b56ad5c293bfe4f0f0b8
tree5ab3319b4416fadfb59ad13992561158fb35c6f4
parent106d6f176ca90a06957a0a33e3c3b6a67cc13b02
gfs2: use i_lock spin_lock for inode qadata

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>
fs/gfs2/quota.c