OSDN Git Service

gfs2: Upgrade shared glocks for atime updates
authorAndreas Gruenbacher <agruenba@redhat.com>
Wed, 25 Nov 2020 22:37:18 +0000 (23:37 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Thu, 26 Nov 2020 18:58:25 +0000 (19:58 +0100)
commit82e938bd5382b322ce81e6cb8fd030987f2da022
tree0b7c0ecd37bea6b11dd540489ece33bd05b95284
parentf39e7d3aae2934b1cfdd209b54c508e2552e9531
gfs2: Upgrade shared glocks for atime updates

Commit 20f829999c38 ("gfs2: Rework read and page fault locking") lifted
the glock lock taking from the low-level ->readpage and ->readahead
address space operations to the higher-level ->read_iter file and
->fault vm operations.  The glocks are still taken in LM_ST_SHARED mode
only.  On filesystems mounted without the noatime option, ->read_iter
sometimes needs to update the atime as well, though.  Right now, this
leads to a failed locking mode assertion in gfs2_dirty_inode.

Fix that by introducing a new update_time inode operation.  There, if
the glock is held non-exclusively, upgrade it to an exclusive lock.

Reported-by: Alexander Aring <aahringo@redhat.com>
Fixes: 20f829999c38 ("gfs2: Rework read and page fault locking")
Cc: stable@vger.kernel.org # v5.8+
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/inode.c