Some functions were allocating 64K booleans, which are (crazily) mapped to 4-byte ints, for a total of 256KB per call. Besides being generally wasteful, this means any code that creates worker threads - e.g. syncops, io-threads translator - must allocate much bigger stacks for each thread *just in case* it calls into portmap. With multiplexing, this limits the number of threads we can have, and therefore the number of bricks we can support in one process.
REVIEW: https://review.gluster.org/15745 (libglusterfs+transport+io-threads: fix 256KB stack abuse) posted (#5) for review on master by Jeff Darcy (firstname.lastname@example.org)
COMMIT: https://review.gluster.org/15745 committed in master by Shyamsundar Ranganathan (email@example.com)
Author: Jeff Darcy <firstname.lastname@example.org>
Date: Thu Oct 27 11:51:47 2016 -0400
libglusterfs+transport+io-threads: fix 256KB stack abuse
Some functions were allocating 64K booleans, which are (crazily) mapped to
4-byte ints, for a total of 256KB per call. Changed to use bitfields instead,
so usage is now only 8KB per call. This was the impediment to changing the
io-threads stack size, so that has been adjusted too.
Signed-off-by: Jeff Darcy <email@example.com>
Smoke: Gluster Build System <firstname.lastname@example.org>
NetBSD-regression: NetBSD Build System <email@example.com>
CentOS-regression: Gluster Build System <firstname.lastname@example.org>
Reviewed-by: N Balachandran <email@example.com>
Reviewed-by: Shyamsundar Ranganathan <firstname.lastname@example.org>
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.11.0, please open a new bug report.
glusterfs-3.11.0 has been announced on the Gluster mailinglists , packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist  and the update infrastructure for your distribution.