On error correcting codes for distributed storage