1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Choose between clustered log versions based on kernel version.

Add fixmes for broken strcmp.
This commit is contained in:
Alasdair Kergon 2010-05-24 17:46:47 +00:00
parent 8e0ef70c96
commit 5782a38543
3 changed files with 17 additions and 3 deletions

View File

@ -1,6 +1,6 @@
Version 2.02.67 -
===============================
Update clustered log kernel module name to log-userspace.
Update clustered log kernel module name to log-userspace for 2.6.31 onwards.
Activate only first head of Replicator for vgchange -ay.
Add Replicators' LVs to dtree for activation.
Avoid print activation message if there is a missing VG (Replicator).

View File

@ -28,6 +28,8 @@
#include "sharedlib.h"
#include "str_list.h"
#include <sys/utsname.h>
#ifdef DMEVENTD
# include "libdevmapper-event.h"
#endif
@ -471,6 +473,7 @@ static int _mirrored_target_present(struct cmd_context *cmd,
uint32_t maj, min, patchlevel;
unsigned maj2, min2, patchlevel2;
char vsn[80];
struct utsname uts;
if (!_mirrored_checked) {
_mirrored_present = target_present(cmd, "mirror", 1);
@ -503,8 +506,18 @@ static int _mirrored_target_present(struct cmd_context *cmd,
* FIXME: Fails incorrectly if cmirror was built into kernel.
*/
if (attributes) {
if (!_mirror_attributes && module_present(cmd, "log-userspace"))
_mirror_attributes |= MIRROR_LOG_CLUSTERED;
if (!_mirror_attributes) {
/*
* The dm-log-userspace module was added to the
* 2.6.31 kernel.
*/
/* FIXME Replace the broken string comparison! */
if (!uname(&uts) && strncmp(uts.release, "2.6.31", 6) < 0) {
if (module_present(cmd, "log-clustered"))
_mirror_attributes |= MIRROR_LOG_CLUSTERED;
} else if (module_present(cmd, "log-userspace"))
_mirror_attributes |= MIRROR_LOG_CLUSTERED;
}
*attributes = _mirror_attributes;
}
_mirrored_checked = 1;

View File

@ -1575,6 +1575,7 @@ static int _mirror_emit_segment_line(struct dm_task *dmt, uint32_t major,
* The dm-log-userspace module was added to the
* 2.6.31 kernel.
*/
/* FIXME Replace the broken string comparison! */
if (strncmp(uts.release, "2.6.31", 6) >= 0)
dm_log_userspace = 1;
}