]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: Allow 64-char hostname to be added as the "host" in CRUSH 33145/head
authorMichal Skalski <mskalski@juniper.net>
Wed, 29 Jan 2020 00:29:58 +0000 (01:29 +0100)
committerShyukri Shyukriev <shshyukriev@suse.com>
Sat, 8 Feb 2020 21:10:31 +0000 (23:10 +0200)
On Linux system it is possible to set 64 character length hostname when
HOST_NAME_MAX is set to 64. It means that if we execute gethostname
function we should expect HOST_NAME_MAX characters + 1 for null
character ending hostname string as described here:
http://man7.org/linux/man-pages/man2/sethostname.2.html

With the current code on host with 64 long hostname osd during start
updates crush map with host=unknown_host.

Signed-off-by: Michal Skalski <mskalski@juniper.net>
(cherry picked from commit 5201048bbb16d6b4833585b9998c9d0364aaeac4)

src/crush/CrushLocation.cc

index 4766a618ab5eacb92e57e0dad3262941659c4181..7bacb666a536afa8805bd2422b241e05a9f53974 100644 (file)
@@ -103,7 +103,7 @@ int CrushLocation::init_on_startup()
 
   // start with a sane default
   char hostname[HOST_NAME_MAX + 1];
-  int r = gethostname(hostname, sizeof(hostname)-1);
+  int r = gethostname(hostname, sizeof(hostname));
   if (r < 0)
     strcpy(hostname, "unknown_host");
   // use short hostname