mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
cmirrord now returns log name to kernel in CTR so it can be registered
Version 2 of the userspace log protocol accepts return information during the DM_ULOG_CTR exchange. The return information contains the name of the log device that is being used (if there is one). The kernel can then register the device via 'dm_get_device'. Amoung other things, this allows for userspace to assemble a correct dependency tree of devices - critical for LVM handling of suspend/resume calls. Also, update dm-log-userspace.h to match the kernel header associated with this protocol change. (Includes a version inc.)
This commit is contained in:
parent
6635332e1b
commit
3b032963d5
@ -1,5 +1,6 @@
|
||||
Version 2.02.89 -
|
||||
==================================
|
||||
Log dev name now returned to kernel for registering during cmirror CTR.
|
||||
Fix lv_info open_count test for disabled verify_udev_operations (2.02.86).
|
||||
Simplify code for lvm worker thread in clvmd.
|
||||
Use pthread_barrier to synchronize clvmd threads at startup.
|
||||
|
@ -597,7 +597,10 @@ static int clog_ctr(struct dm_ulog_request *rq)
|
||||
/* We join the CPG when we resume */
|
||||
|
||||
/* No returning data */
|
||||
rq->data_size = 0;
|
||||
if ((rq->version > 1) && !strcmp(argv[0], "clustered-disk"))
|
||||
rq->data_size = sprintf(rq->data, "%s", argv[1]) + 1;
|
||||
else
|
||||
rq->data_size = 0;
|
||||
|
||||
if (r) {
|
||||
LOG_ERROR("Failed to create cluster log (%s)", rq->uuid);
|
||||
|
@ -52,15 +52,20 @@
|
||||
* Payload-to-userspace:
|
||||
* A single string containing all the argv arguments separated by ' 's
|
||||
* Payload-to-kernel:
|
||||
* None. ('data_size' in the dm_ulog_request struct should be 0.)
|
||||
* The name of the device that is used as the backing store for the log
|
||||
* data. 'dm_get_device' will be called on this device. ('dm_put_device'
|
||||
* will be called on this device automatically after calling DM_ULOG_DTR.)
|
||||
* If there is no device needed for log data, 'data_size' in the
|
||||
* dm_ulog_request struct should be 0.
|
||||
*
|
||||
* The UUID contained in the dm_ulog_request structure is the reference that
|
||||
* will be used by all request types to a specific log. The constructor must
|
||||
* record this assotiation with instance created.
|
||||
* record this assotiation with the instance created.
|
||||
*
|
||||
* When the request has been processed, user-space must return the
|
||||
* dm_ulog_request to the kernel - setting the 'error' field and
|
||||
* 'data_size' appropriately.
|
||||
* dm_ulog_request to the kernel - setting the 'error' field, filling the
|
||||
* data field with the log device if necessary, and setting 'data_size'
|
||||
* appropriately.
|
||||
*/
|
||||
#define DM_ULOG_CTR 1
|
||||
|
||||
@ -377,8 +382,11 @@
|
||||
* dm_ulog_request or a change in the way requests are
|
||||
* issued/handled. Changes are outlined here:
|
||||
* version 1: Initial implementation
|
||||
* version 2: DM_ULOG_CTR allowed to return a string containing a
|
||||
* device name that is to be registered with DM via
|
||||
* 'dm_get_device'.
|
||||
*/
|
||||
#define DM_ULOG_REQUEST_VERSION 1
|
||||
#define DM_ULOG_REQUEST_VERSION 2
|
||||
|
||||
struct dm_ulog_request {
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user