[lvm-devel] master - dmeventd: minimize locking time for get_imeout
Zdenek Kabelac
zkabelac at fedoraproject.org
Thu Oct 22 21:33:54 UTC 2015
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=15dbd4b56a65dba2f19bb1685529731faa9894c6
Commit: 15dbd4b56a65dba2f19bb1685529731faa9894c6
Parent: e2ea2a81476495f494915774c46c0b3c139d1c3f
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Thu Oct 22 12:38:26 2015 +0200
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Thu Oct 22 22:34:30 2015 +0200
dmeventd: minimize locking time for get_imeout
Don't hold lock when creating message (allocating memory).
Thread cannot dissapear as it's only the same thread which
may clean it.
---
daemons/dmeventd/dmeventd.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/daemons/dmeventd/dmeventd.c b/daemons/dmeventd/dmeventd.c
index 2f5fe67..26e611d 100644
--- a/daemons/dmeventd/dmeventd.c
+++ b/daemons/dmeventd/dmeventd.c
@@ -1292,18 +1292,18 @@ static int _get_timeout(struct message_data *message_data)
struct thread_status *thread;
struct dm_event_daemon_message *msg = message_data->msg;
- dm_free(msg->data);
-
_lock_mutex();
- if ((thread = _lookup_thread_status(message_data))) {
- msg->size = dm_asprintf(&(msg->data), "%s %" PRIu32,
- message_data->id, thread->timeout);
- } else
- msg->data = NULL;
-
+ thread = _lookup_thread_status(message_data);
_unlock_mutex();
- return thread ? 0 : -ENODEV;
+ if (!thread)
+ return -ENODEV;
+
+ dm_free(msg->data);
+ msg->size = dm_asprintf(&(msg->data), "%s %" PRIu32,
+ message_data->id, thread->timeout);
+
+ return (msg->data && msg->size) ? 0 : -ENOMEM;
}
/* Open fifos used for client communication. */
More information about the lvm-devel
mailing list