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 -
|
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).
|
Fix lv_info open_count test for disabled verify_udev_operations (2.02.86).
|
||||||
Simplify code for lvm worker thread in clvmd.
|
Simplify code for lvm worker thread in clvmd.
|
||||||
Use pthread_barrier to synchronize clvmd threads at startup.
|
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 */
|
/* We join the CPG when we resume */
|
||||||
|
|
||||||
/* No returning data */
|
/* 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) {
|
if (r) {
|
||||||
LOG_ERROR("Failed to create cluster log (%s)", rq->uuid);
|
LOG_ERROR("Failed to create cluster log (%s)", rq->uuid);
|
||||||
|
@ -52,15 +52,20 @@
|
|||||||
* Payload-to-userspace:
|
* Payload-to-userspace:
|
||||||
* A single string containing all the argv arguments separated by ' 's
|
* A single string containing all the argv arguments separated by ' 's
|
||||||
* Payload-to-kernel:
|
* 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
|
* 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
|
* 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
|
* When the request has been processed, user-space must return the
|
||||||
* dm_ulog_request to the kernel - setting the 'error' field and
|
* dm_ulog_request to the kernel - setting the 'error' field, filling the
|
||||||
* 'data_size' appropriately.
|
* data field with the log device if necessary, and setting 'data_size'
|
||||||
|
* appropriately.
|
||||||
*/
|
*/
|
||||||
#define DM_ULOG_CTR 1
|
#define DM_ULOG_CTR 1
|
||||||
|
|
||||||
@ -377,8 +382,11 @@
|
|||||||
* dm_ulog_request or a change in the way requests are
|
* dm_ulog_request or a change in the way requests are
|
||||||
* issued/handled. Changes are outlined here:
|
* issued/handled. Changes are outlined here:
|
||||||
* version 1: Initial implementation
|
* 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 {
|
struct dm_ulog_request {
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user