Version 1.02.110 -
======================================
+ Dmeventd read device status with 'noflush'.
Dmeventd closes control device when no device is monitored.
Thin plugin for dmeventd improved percentage usage.
Snapshot plugin for dmeventd improved percentage usage.
return ret;
}
+static struct dm_task *_get_device_status(struct thread_status *ts)
+{
+ struct dm_task *dmt = dm_task_create(DM_DEVICE_STATUS);
+
+ if (!dmt)
+ return_NULL;
+
+ if (!dm_task_set_uuid(dmt, ts->device.uuid)) {
+ dm_task_destroy(dmt);
+ return_NULL;
+ }
+
+ /* Non-blocking status read */
+ if (!dm_task_no_flush(dmt))
+ log_warn("WARNING: Can't set no_flush for dm status.");
+
+ if (!dm_task_run(dmt)) {
+ dm_task_destroy(dmt);
+ return_NULL;
+ }
+
+ return dmt;
+}
+
/*
* Find an existing thread for a device.
*
_unlock_mutex();
}
-static struct dm_task *_get_device_status(struct thread_status *ts)
-{
- struct dm_task *dmt = dm_task_create(DM_DEVICE_STATUS);
-
- if (!dmt)
- return NULL;
-
- if (!dm_task_set_uuid(dmt, ts->device.uuid)) {
- dm_task_destroy(dmt);
- return NULL;
- }
-
- if (!dm_task_run(dmt)) {
- dm_task_destroy(dmt);
- return NULL;
- }
-
- return dmt;
-}
-
/* Device monitoring thread. */
static void *_monitor_thread(void *arg)
{