1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-10-28 03:27:58 +03:00

Code refactoring

Properly test for dm_asprintf result.
Keep unlocking of mutex in the same function and do not spread lock and
unlock over functions.
This commit is contained in:
Zdenek Kabelac 2012-03-02 23:01:10 +00:00
parent f194dabb09
commit edb42ac367

View File

@ -1000,10 +1000,8 @@ static int _register_for_event(struct message_data *message_data)
almost as good as dead already... */ almost as good as dead already... */
if (thread_new->events & DM_EVENT_TIMEOUT) { if (thread_new->events & DM_EVENT_TIMEOUT) {
ret = -_register_for_timeout(thread_new); ret = -_register_for_timeout(thread_new);
if (ret) { if (ret)
_unlock_mutex(); goto outth;
goto out;
}
} }
if (!(thread = _lookup_thread_status(message_data))) { if (!(thread = _lookup_thread_status(message_data))) {
@ -1029,6 +1027,7 @@ static int _register_for_event(struct message_data *message_data)
/* Or event # into events bitfield. */ /* Or event # into events bitfield. */
thread->events |= message_data->events.field; thread->events |= message_data->events.field;
outth:
_unlock_mutex(); _unlock_mutex();
out: out:
@ -1105,15 +1104,19 @@ static int _registered_device(struct message_data *message_data,
const char *id = message_data->id; const char *id = message_data->id;
const char *dso = thread->dso_data->dso_name; const char *dso = thread->dso_data->dso_name;
const char *dev = thread->device.uuid; const char *dev = thread->device.uuid;
int r;
unsigned events = ((thread->status == DM_THREAD_RUNNING) unsigned events = ((thread->status == DM_THREAD_RUNNING)
&& (thread->events)) ? thread->events : thread-> && (thread->events)) ? thread->events : thread->
events | DM_EVENT_REGISTRATION_PENDING; events | DM_EVENT_REGISTRATION_PENDING;
dm_free(msg->data); dm_free(msg->data);
msg->size = dm_asprintf(&(msg->data), fmt, id, dso, dev, events); if ((r = dm_asprintf(&(msg->data), fmt, id, dso, dev, events)) < 0) {
msg->size = 0;
return -ENOMEM;
}
_unlock_mutex(); msg->size = (uint32_t) r;
return 0; return 0;
} }
@ -1146,6 +1149,7 @@ static int _want_registered_device(char *dso_name, char *device_uuid,
static int _get_registered_dev(struct message_data *message_data, int next) static int _get_registered_dev(struct message_data *message_data, int next)
{ {
struct thread_status *thread, *hit = NULL; struct thread_status *thread, *hit = NULL;
int ret = -ENOENT;
_lock_mutex(); _lock_mutex();
@ -1162,10 +1166,8 @@ static int _get_registered_dev(struct message_data *message_data, int next)
* If we got a registered device and want the next one -> * If we got a registered device and want the next one ->
* fetch next conforming element off the list. * fetch next conforming element off the list.
*/ */
if (hit && !next) { if (hit && !next)
_unlock_mutex(); goto reg;
return _registered_device(message_data, hit);
}
if (!hit) if (!hit)
goto out; goto out;
@ -1181,13 +1183,13 @@ static int _get_registered_dev(struct message_data *message_data, int next)
} }
} }
_unlock_mutex(); reg:
return _registered_device(message_data, hit); ret = _registered_device(message_data, hit);
out: out:
_unlock_mutex(); _unlock_mutex();
return -ENOENT; return ret;
} }
static int _get_registered_device(struct message_data *message_data) static int _get_registered_device(struct message_data *message_data)