Commit bcfad426 authored by Alexander Aring's avatar Alexander Aring Committed by David Teigland

dlm: improve plock logging if interrupted

This patch changes the log level if a plock is removed when interrupted
from debug to info. Additional it signals now that the plock entity was
removed to let the user know what's happening.

If on a dev_write() a pending plock cannot be find it will signal that
it might have been removed because wait interruption.

Before this patch there might be a "dev_write no op ..." info message
and the users can only guess that the plock was removed before because
the wait interruption. To be sure that is the case we log both messages
on the same log level.

Let both message be logged on info layer because it should not happened
a lot and if it happens it should be clear why the op was not found.
Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
Signed-off-by: default avatarDavid Teigland <teigland@redhat.com>
parent a800ba77
...@@ -161,11 +161,12 @@ int dlm_posix_lock(dlm_lockspace_t *lockspace, u64 number, struct file *file, ...@@ -161,11 +161,12 @@ int dlm_posix_lock(dlm_lockspace_t *lockspace, u64 number, struct file *file,
rv = wait_event_interruptible(recv_wq, (op->done != 0)); rv = wait_event_interruptible(recv_wq, (op->done != 0));
if (rv == -ERESTARTSYS) { if (rv == -ERESTARTSYS) {
log_debug(ls, "%s: wait killed %llx", __func__,
(unsigned long long)number);
spin_lock(&ops_lock); spin_lock(&ops_lock);
list_del(&op->list); list_del(&op->list);
spin_unlock(&ops_lock); spin_unlock(&ops_lock);
log_print("%s: wait interrupted %x %llx, op removed",
__func__, ls->ls_global_id,
(unsigned long long)number);
dlm_release_plock_op(op); dlm_release_plock_op(op);
do_unlock_close(ls, number, file, fl); do_unlock_close(ls, number, file, fl);
goto out; goto out;
...@@ -443,8 +444,8 @@ static ssize_t dev_write(struct file *file, const char __user *u, size_t count, ...@@ -443,8 +444,8 @@ static ssize_t dev_write(struct file *file, const char __user *u, size_t count,
else else
wake_up(&recv_wq); wake_up(&recv_wq);
} else } else
log_print("dev_write no op %x %llx", info.fsid, log_print("%s: no op %x %llx - may got interrupted?", __func__,
(unsigned long long)info.number); info.fsid, (unsigned long long)info.number);
return count; return count;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment