From c4a608799a577a4f38139f6bb8a47da8efb0fec3 Mon Sep 17 00:00:00 2001 From: N Balachandran Date: Fri, 21 Jul 2017 16:38:14 +0530 Subject: cluster/dht: Don't store the entire uuid for subvols Comparing the uuid string of the local node against that stored in the local_subvol information is inefficient, especially as it is done for every file to be migrated. The code has now been changed to set the value of info to 1 if the nodeuuid is that of the node making the comparison so this becomes an integer comparison. Change-Id: I7491d59caad3b71dbf5facc94dcde0cd53962775 BUG: 1451434 Signed-off-by: N Balachandran --- xlators/cluster/dht/src/dht-common.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'xlators/cluster/dht/src/dht-common.c') diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 1cc2f08abfb..c7069a9dbc0 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -3938,7 +3938,7 @@ dht_find_local_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int i = 0; int index = 0; int found = 0; - + nodeuuid_info_t *tmp_ptr = NULL; VALIDATE_OR_GOTO (frame, out); VALIDATE_OR_GOTO (frame->local, out); @@ -4023,8 +4023,8 @@ dht_find_local_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, } conf->local_nodeuuids[index].count = count; - conf->local_nodeuuids[index].uuids - = GF_CALLOC (count, sizeof (uuid_t), 1); + conf->local_nodeuuids[index].elements + = GF_CALLOC (count, sizeof (nodeuuid_info_t), 1); /* The node-uuids are guaranteed to be returned in the same * order as the bricks @@ -4039,9 +4039,15 @@ dht_find_local_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, uuid_str = next_uuid_str) { next_uuid_str = strtok_r (NULL, " ", &saveptr); - gf_uuid_parse (uuid_str, - conf->local_nodeuuids[index].uuids[i]); + tmp_ptr = &(conf->local_nodeuuids[index].elements[i]); + gf_uuid_parse (uuid_str, tmp_ptr->uuid); + + if (!gf_uuid_compare (tmp_ptr->uuid, + conf->defrag->node_uuid)) { + tmp_ptr->info = REBAL_NODEUUID_MINE; + } i++; + tmp_ptr = NULL; } } @@ -4061,8 +4067,8 @@ dht_find_local_subvol_cbk (call_frame_t *frame, void *cookie, xlator_t *this, unwind: - GF_FREE (conf->local_nodeuuids[index].uuids); - conf->local_nodeuuids[index].uuids = NULL; + GF_FREE (conf->local_nodeuuids[index].elements); + conf->local_nodeuuids[index].elements = NULL; DHT_STACK_UNWIND (getxattr, frame, -1, local->op_errno, NULL, xdata); out: -- cgit