Isn't the issue here that the client process requesting the data from the OSDs needs to know where in the CRUSH topology it runs?
In a hyperconverged cluster with only three nodes this may be a very good optimization, because there all data is stored on the local node.
In larger clusters this is...