aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-log-userspace-transfer.h
diff options
context:
space:
mode:
authorJonathan Brassow <jbrassow@redhat.com>2009-09-04 20:40:34 +0100
committerAlasdair G Kergon <agk@redhat.com>2009-09-04 20:40:34 +0100
commit7ec23d50949d5062b5b749638dd9380ed75e58e5 (patch)
tree28183b6468683cf28abd63b9c322b9f31bcddc5e /drivers/md/dm-log-userspace-transfer.h
parentd2b698644c97cb033261536a4f2010924a00eac9 (diff)
downloadkernel_samsung_crespo-7ec23d50949d5062b5b749638dd9380ed75e58e5.zip
kernel_samsung_crespo-7ec23d50949d5062b5b749638dd9380ed75e58e5.tar.gz
kernel_samsung_crespo-7ec23d50949d5062b5b749638dd9380ed75e58e5.tar.bz2
dm log: userspace add luid to distinguish between concurrent log instances
Device-mapper userspace logs (like the clustered log) are identified by a universally unique identifier (UUID). This identifier is used to associate requests from the kernel to a specific log in userspace. The UUID must be unique everywhere, since multiple machines may use this identifier when communicating about a particular log, as is the case for cluster logs. Sometimes, device-mapper/LVM may re-use a UUID. This is the case during pvmoves, when moving from one segment of an LV to another, or when resizing a mirror, etc. In these cases, a new log is created with the same UUID and loaded in the "inactive" slot. When a device-mapper "resume" is issued, the "live" table is deactivated and the new "inactive" table becomes "live". (The "inactive" table can also be removed via a device-mapper 'clear' command.) The above two issues were colliding. More than one log was being created with the same UUID, and there was no way to distinguish between them. So, sometimes the wrong log would be swapped out during the exchange. The solution is to create a locally unique identifier, 'luid', to go along with the UUID. This new identifier is used to determine exactly which log is being referenced by the kernel when the log exchange is made. The identifier is not universally safe, but it does not need to be, since create/destroy/suspend/resume operations are bound to a specific machine; and these are the operations that make up the exchange. Signed-off-by: Jonathan Brassow <jbrassow@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md/dm-log-userspace-transfer.h')
-rw-r--r--drivers/md/dm-log-userspace-transfer.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/dm-log-userspace-transfer.h b/drivers/md/dm-log-userspace-transfer.h
index c26d8e4..04ee874 100644
--- a/drivers/md/dm-log-userspace-transfer.h
+++ b/drivers/md/dm-log-userspace-transfer.h
@@ -11,7 +11,7 @@
int dm_ulog_tfr_init(void);
void dm_ulog_tfr_exit(void);
-int dm_consult_userspace(const char *uuid, int request_type,
+int dm_consult_userspace(const char *uuid, uint64_t luid, int request_type,
char *data, size_t data_size,
char *rdata, size_t *rdata_size);