summaryrefslogtreecommitdiff
path: root/arch/h8300
diff options
context:
space:
mode:
authorBob Peterson <rpeterso@redhat.com>2020-11-18 08:54:31 -0500
committerAndreas Gruenbacher <agruenba@redhat.com>2020-11-18 16:28:11 +0100
commit20b329129009caf1c646152abe09b697227e1c37 (patch)
tree585cd61c8decf037015a12773334c0b847471894 /arch/h8300
parent09162bc32c880a791c6c0668ce0745cf7958f576 (diff)
gfs2: Fix regression in freeze_go_sync
Patch 541656d3a513 ("gfs2: freeze should work on read-only mounts") changed the check for glock state in function freeze_go_sync() from "gl->gl_state == LM_ST_SHARED" to "gl->gl_req == LM_ST_EXCLUSIVE". That's wrong and it regressed gfs2's freeze/thaw mechanism because it caused only the freezing node (which requests the glock in EX) to queue freeze work. All nodes go through this go_sync code path during the freeze to drop their SHared hold on the freeze glock, allowing the freezing node to acquire it in EXclusive mode. But all the nodes must freeze access to the file system locally, so they ALL must queue freeze work. The freeze_work calls freeze_func, which makes a request to reacquire the freeze glock in SH, effectively blocking until the thaw from the EX holder. Once thawed, the freezing node drops its EX hold on the freeze glock, then the (blocked) freeze_func reacquires the freeze glock in SH again (on all nodes, including the freezer) so all nodes go back to a thawed state. This patch changes the check back to gl_state == LM_ST_SHARED like it was prior to 541656d3a513. Fixes: 541656d3a513 ("gfs2: freeze should work on read-only mounts") Cc: stable@vger.kernel.org # v5.8+ Signed-off-by: Bob Peterson <rpeterso@redhat.com> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Diffstat (limited to 'arch/h8300')
0 files changed, 0 insertions, 0 deletions