diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2015-10-22 12:38:26 +0200 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2015-10-22 22:34:30 +0200 |
commit | 15dbd4b56a65dba2f19bb1685529731faa9894c6 (patch) | |
tree | 1a0b2407a5e61c1e6c564e735a67ec4b9c604ca0 | |
parent | e2ea2a81476495f494915774c46c0b3c139d1c3f (diff) | |
download | lvm2-15dbd4b56a65dba2f19bb1685529731faa9894c6.tar.gz |
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.
-rw-r--r-- | 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 2f5fe6747..26e611d19 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. */ |