Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE
drbd-utils.7944
Fix-no-bitmap-allocate-for-stacked-res.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File Fix-no-bitmap-allocate-for-stacked-res.patch of Package drbd-utils.7944
From b5eab810ded459792c24a4bc5db5ce272ea1ee15 Mon Sep 17 00:00:00 2001 From: Philipp Reisner <philipp.reisner@linbit.com> Date: Fri, 26 Jan 2018 16:09:01 +0100 Subject: [PATCH] v9,drbdadm,stacking: Fix setting the disk in stacked host sections This got broken on the long way from drbd-8.4 to 9. --- diff --git a/user/v9/drbdadm_postparse.c b/user/v9/drbdadm_postparse.c index 1cefd5c2..b9e90de8 100644 --- a/user/v9/drbdadm_postparse.c +++ b/user/v9/drbdadm_postparse.c @@ -493,9 +493,9 @@ void set_peer_in_resource(struct d_resource* res, int peer_required) add_no_bitmap_opt(res); } -void set_disk_in_res(struct d_resource *res) +void set_stacked_disk_in_res(struct d_resource *res) { - struct d_host_info *host; + struct d_host_info *host, *lower_host; struct d_volume *a, *b; if (res->ignore) @@ -505,41 +505,39 @@ void set_disk_in_res(struct d_resource *res) if (!host->lower) continue; - if (host->lower->ignore) - continue; - - check_volume_sets_equal(res, host, host->lower->me); - if (!config_valid) - /* don't even bother for broken config. */ - continue; + for_each_host(lower_host, &host->lower->all_hosts) { + check_volume_sets_equal(res, host, lower_host); + if (!config_valid) + /* don't even bother for broken config. */ + continue; - /* volume lists are sorted on vnr */ - a = STAILQ_FIRST(&host->volumes); - b = STAILQ_FIRST(&host->lower->me->volumes); - while (a) { - while (b && a->vnr > b->vnr) { - /* Lower resource has more volumes. - * Probably unusual, but we decided - * that it should be legal. - * Skip those that do not match */ - b = STAILQ_NEXT(b, link); - } - if (a && b && a->vnr == b->vnr) { - if (b->device) - m_asprintf(&a->disk, "%s", b->device); - else - m_asprintf(&a->disk, "/dev/drbd%u", b->device_minor); - /* stacked implicit volumes need internal meta data, too */ - if (!a->meta_disk) - m_asprintf(&a->meta_disk, "internal"); - if (!a->meta_index) - m_asprintf(&a->meta_index, "internal"); - a = STAILQ_NEXT(a, link); - b = STAILQ_NEXT(b, link); - } else { - /* config_invalid should have been set - * by check_volume_sets_equal */ - assert(0); + a = STAILQ_FIRST(&host->volumes); + b = STAILQ_FIRST(&lower_host->volumes); + while (a) { + while (b && a->vnr > b->vnr) { + /* Lower resource has more volumes. + * Probably unusual, but we decided + * that it should be legal. + * Skip those that do not match */ + b = STAILQ_NEXT(b, link); + } + if (a && b && a->vnr == b->vnr) { + if (b->device) + m_asprintf(&a->disk, "%s", b->device); + else + m_asprintf(&a->disk, "/dev/drbd%u", b->device_minor); + /* stacked implicit volumes need internal meta data, too */ + if (!a->meta_disk) + m_asprintf(&a->meta_disk, "internal"); + if (!a->meta_index) + m_asprintf(&a->meta_index, "internal"); + a = STAILQ_NEXT(a, link); + b = STAILQ_NEXT(b, link); + } else { + /* config_invalid should have been set + * by check_volume_sets_equal */ + assert(0); + } } } } @@ -1140,7 +1138,7 @@ void post_parse(struct resources *resources, enum pp_flags flags) // Needs "me" set already for_each_resource(res, resources) if (res->stacked_on_one) - set_disk_in_res(res); + set_stacked_disk_in_res(res); for_each_resource(res, resources) fixup_peer_devices(res);
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