  Regenerating codes are a class of recently developed codes for distributed
storage that, like Reed-Solomon codes, permit data recovery from any subset of
k nodes within the n-node network. However, regenerating codes possess in
addition, the ability to repair a failed node by connecting to an arbitrary
subset of d nodes. It has been shown that for the case of functional-repair,
there is a tradeoff between the amount of data stored per node and the
bandwidth required to repair a failed node. A special case of functional-repair
is exact-repair where the replacement node is required to store data identical
to that in the failed node. Exact-repair is of interest as it greatly
simplifies system implementation. The first result of the paper is an explicit,
exact-repair code for the point on the storage-bandwidth tradeoff corresponding
to the minimum possible repair bandwidth, for the case when d=n-1. This code
has a particularly simple graphical description and most interestingly, has the
ability to carry out exact-repair through mere transfer of data and without any
need to perform arithmetic operations. Hence the term `repair-by-transfer'. The
second result of this paper shows that the interior points on the
storage-bandwidth tradeoff cannot be achieved under exact-repair, thus pointing
to the existence of a separate tradeoff under exact-repair. Specifically, we
identify a set of scenarios, termed `helper node pooling', and show that it is
the necessity to satisfy such scenarios that over-constrains the system.
