Bob Peterson 5cff77b982 gfs2: Don't call dlm after protocol is unmounted
[ Upstream commit d1340f80f0b8066321b499a376780da00560e857 ]

In the gfs2 withdraw sequence, the dlm protocol is unmounted with a call
to lm_unmount. After a withdraw, users are allowed to unmount the
withdrawn file system. But at that point we may still have glocks left
over that we need to free via unmount's call to gfs2_gl_hash_clear.
These glocks may have never been completed because of whatever problem
caused the withdraw (IO errors or whatever).

Before this patch, function gdlm_put_lock would still try to call into
dlm to unlock these leftover glocks, which resulted in dlm returning
-EINVAL because the lock space was abandoned. These glocks were never
freed because there was no mechanism after that to free them.

This patch adds a check to gdlm_put_lock to see if the locking protocol
was inactive (DFL_UNMOUNT flag) and if so, free the glock and not
make the invalid call into dlm.

I could have combined this "if" with the one that follows, related to
leftover glock LVBs, but I felt the code was more readable with its own
if clause.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-09-22 11:48:07 +02:00
..
2018-07-02 16:27:17 +01:00
2020-05-20 08:18:41 +02:00
2018-06-04 07:56:51 -05:00
2018-07-25 00:08:59 +02:00
2018-02-01 11:25:31 -07:00
2018-01-23 07:38:53 -07:00
2018-07-25 00:06:24 +02:00
2018-07-05 17:47:16 +02:00
2018-06-21 07:39:44 -05:00
2018-08-03 13:20:02 +01:00