Signed-off-by: Christoph Hellwig <hch at lst.de> --- sheep/group.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) Index: sheepdog/sheep/group.c =================================================================== --- sheepdog.orig/sheep/group.c 2012-04-26 17:56:56.200544896 +0200 +++ sheepdog/sheep/group.c 2012-04-26 18:03:55.660555635 +0200 @@ -119,15 +119,23 @@ int get_zones_nr_from(struct sd_node *no uint32_t zones[SD_MAX_REDUNDANCY]; for (i = 0; i < nr_nodes; i++) { + /* + * Only count zones that actually store data, pure gateways + * don't contribute to the redundancy level. + */ + if (!nodes[i].nr_vnodes) + continue; + for (j = 0; j < nr_zones; j++) { if (nodes[i].zone == zones[j]) break; } - if (j == nr_zones) - zones[nr_zones++] = nodes[i].zone; - if (nr_zones == ARRAY_SIZE(zones)) - break; + if (j == nr_zones) { + zones[nr_zones] = nodes[i].zone; + if (++nr_zones == ARRAY_SIZE(zones)) + break; + } } return nr_zones; |