Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.2
lvm2
support-drbd-filter.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File support-drbd-filter.diff of Package lvm2
This is still very primitive support of drbd in lvm2. Can we use some /sys information for this ? Index: LVM2.2.02.45/lib/cache/lvmcache.c =================================================================== --- LVM2.2.02.45.orig/lib/cache/lvmcache.c +++ LVM2.2.02.45/lib/cache/lvmcache.c @@ -1136,6 +1136,13 @@ struct lvmcache_info *lvmcache_add(struc pvid, dev_name(dev), dev_name(existing->dev)); return NULL; + } else if (MAJOR(existing->dev->dev) == drbd_major() && + MAJOR(dev->dev) != drbd_major()) { + log_very_verbose("Ignoring duplicate PV %s on " + "%s - using drbd %s", + pvid, dev_name(dev), + dev_name(existing->dev)); + return NULL; } else if (MAJOR(existing->dev->dev) != md_major() && MAJOR(dev->dev) == md_major()) log_very_verbose("Duplicate PV %s on %s - " @@ -1148,6 +1155,12 @@ struct lvmcache_info *lvmcache_add(struc "using dm %s", pvid, dev_name(existing->dev), dev_name(dev)); + else if (MAJOR(existing->dev->dev) != drbd_major() && + MAJOR(dev->dev) == drbd_major()) + log_very_verbose("Duplicate PV %s on %s - " + "using drbd %s", pvid, + dev_name(existing->dev), + dev_name(dev)); /* FIXME If both dm, check dependencies */ //else if (dm_is_dm_major(MAJOR(existing->dev->dev)) && //dm_is_dm_major(MAJOR(dev->dev))) Index: LVM2.2.02.45/lib/filters/filter.c =================================================================== --- LVM2.2.02.45.orig/lib/filters/filter.c +++ LVM2.2.02.45/lib/filters/filter.c @@ -46,12 +46,20 @@ typedef struct { static int _md_major = -1; static int _device_mapper_major = -1; +static int _drbd_major = -1; int md_major(void) { return _md_major; } +/* FIXME: Should we consider filter out non-primary + drbd resource ?? */ +int drbd_major(void) +{ + return _drbd_major; +} + /* * Devices are only checked for partition tables if their minor number * is a multiple of the number corresponding to their type below @@ -208,6 +216,9 @@ static int _scan_proc_dev(const char *pr if (!strncmp("md", line + i, 2) && isspace(*(line + i + 2))) _md_major = line_maj; + if (!strncmp("drbd", line + i, 4) && isspace(*(line + i + 4))) + _drbd_major = line_maj; + /* Look for device-mapper device */ /* FIXME Cope with multiple majors */ if (!strncmp("device-mapper", line + i, 13) && isspace(*(line + i + 13)))
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor