diff options
author | Bob Peterson <rpeterso@redhat.com> | 2021-07-30 19:41:49 +0200 |
---|---|---|
committer | Bob Peterson <rpeterso@redhat.com> | 2021-08-20 16:03:46 +0200 |
commit | d1340f80f0b8066321b499a376780da00560e857 (patch) | |
tree | b9e6d2a82277a29296211d145ec529ad1f085a14 /Documentation/x86/elf_auxvec.rst | |
parent | gfs2: don't stop reads while withdraw in progress (diff) | |
download | linux-d1340f80f0b8066321b499a376780da00560e857.tar.xz linux-d1340f80f0b8066321b499a376780da00560e857.zip |
gfs2: Don't call dlm after protocol is unmounted
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>
Diffstat (limited to 'Documentation/x86/elf_auxvec.rst')
0 files changed, 0 insertions, 0 deletions